fun main() { println(mix(Color.RED, Color.YELLOW)); } fun mix(c1: Color, c2: Color) = when (setOf(c1, c2)) { setOf(Color.RED, Color.YELLOW) -> Color.ORANGE setOf(Color.YELLOW, Color.BLUE) -> Color.GREEN setOf(Color.BLUE, Color.VIOLET) -> Color.INDIGO else -> throw Exception("Dirty color") }setOf는 소스를 까보면..public fun setOf(vararg elements: T): Set = if (elements.size > 0) elements.toSet() else em..
스마트 캐스트Expr 인터페이스 아래 식을 표현하는 클래스 계층을 둠.IDE 상에서 형광색이 보면해당 위치의 객체변수가 스마트캐스트 기능으로 Num 타입으로 캐스팅되었다는 것을 알 수 있다.코틀린은 묵시적으로 전부 캐스팅을 시도한다. Uploaded by N2T
스마트 캐스트Expr 인터페이스 아래 식을 표현하는 클래스 계층을 둠.IDE 상에서 형광색이 보면해당 위치의 객체변수가 스마트캐스트 기능으로 Num 타입으로 캐스팅되었다는 것을 알 수 있다.코틀린은 묵시적으로 전부 캐스팅을 시도한다. Uploaded by N2T
fun eval(e: Expr): Int { if (e is Num) { return e.value } else if (e is Sum) { return eval(e.left) + eval(e.right) } else { throw IllegalArgumentException("Unknown expression") } }위는 if 식으로 사용한 경우 when 으로 리팩토링 한 경우fun eval(e: Expr): Int = when (e) { is Num -> e.value is Sum -> eval(e.left) + eval(e.right) else -> throw IllegalArgumentException("Unknown expression") }when 식은 타입 검사와 스마트 캐스프를 사용해 각..
범위 사용fun main(args: Array) { //범위 사용 val oneToTen = 1..10 // 1부터 10 까지 , 이상과 이하를 나타낼때는 .. 을 사용한다. for (i in oneToTen) { print("$i ") } }수열 사용fun main(args: Array) { for (i in 100 downTo 1 step 2) { println(i) } }수열을 해석하면100 부터 1 까지 ( 폐구간 ) : 100 이하 1 이상이라는 의미이다.step2씩 감소98 96 … 4 2 까지 출력반 만 닫힌 범위Intellij 에서 가독성 좋게 해당 문법의 인레이 힌트를 지원한다.for (x in 0..
fun main(args: Array) { println("Hello, World!") }함수의 선언fun 키워드 사용코틀린에서 함수는 클래스 뿐만이 아니라최상위 수준에도 정의가 가능하다파라미터 타입파라미터 이름 뒤에 선언한다.args 는 String 배열최상위 수준 함수클래스 안에 함수를 넣어야 할 필요가 없다.함수를 최상위 수준에서 정의할 수 있음.배열의 처리배열이 일반적인 클래스와 동일하게 취급됨자바와 다르게 배열 처리를 위한 별도 문법이 없음 ..뭐지?.표준 라이브러리System.out.println 대신 println 사용더 간결함세미 콜론 생략줄 끝에 세미콜론을 붙이지 않아도 된다. Uploaded by N2T