Skip to content

Latest commit

 

History

History
157 lines (113 loc) · 3.77 KB

4장.md

File metadata and controls

157 lines (113 loc) · 3.77 KB

조건문

fun main() {
    val a = 12
    val b = 7
    
    val max = if (a > b) {
        a  // max 에 a 할당
    } else {
        b  // max에 b 할당
    }
}

코틀린에서는 위와 같이 마지막 식인 값은 max에 할당되도록 코드를 작성할 수 있습니다.



in 연산자와 범위 연산자로 조건식 간략하게 만들기

else if (score >= 80.0 && score <= 89.9)
else if (score in 80.0 .. 89.9)

지금은 80~89.9점의 예시지만 점수가 많아지면다면 else if에 조건을 쓰는 것이 많아질 것인데요. 이 때 변수 이름 in 시작 값 ... 마지막 값을 사용하여 간략하게 만들 수 있습니다.



when문으로 다양한 조건 처리하기

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> {
        print("x는 1, 2가 아닙니다")
    }
}

when문은 다른 언어에서 switch~case문과 비슷하지만 각 case를 멈추는 break가 필요하지 않습니다.


when (x) {
    1, 2 -> print("x == 1")
    else -> {
        print("x는 1, 2가 아닙니다")
    }
}

만약 일치되는 조건을 한 번에 여러 개 표현하면 ,를 이용해서 위와 같이 표현할 수도 있습니다.


when (x) {
    in 1..10 -> print("x는 1 이상 10 이하 입니다.")
    !in 10..20 -> print("x는 10이상 20 이하의 범위에 포함되지 않습니다.")
    else -> print()
}

when과 in을 써서 편리하게 범위 구간을 설정할 수 있습니다. 그리고 !in을 사용하면 설정한 범위 이외의 범위들이 포함됩니다.(즉, 10보다 작거나, 20보다 큰 값의 범위)



when과 is 키워드 함께 사용하기

val str = "안녕하세요!"
val result = when(str) {
    is String -> "문자열 입니다."
    else -> false
}

is 키워드를 사용하면 특정 자료형을 검사할 수 있습니다. when문과 is 키워드를 잘 사용하면 어던 변수에 할당된 값의 자료형을 검사하여 자료형에 따라 문장을 실행하도록 프로그램을 구성할 수 있습니다. 즉, 위의 코드도 str의 자료형이 String인지 검사하고 실행문의 결과를 return 합니다.



반복문

for (x in 1..5) { // 1~5 출력
    print(x) // "12345"
}

for (x in 5..1) { 
    print(x) // 아무것도 출력되지 않음
}

for (x in 5 downTo 1) {
    print(x)  // "54321" 역순으로 출력
}

for (x in 1..5 step 2) {
    print(x)  // "135"
}

for (x in 5 downTo 1 step 2) {
    print(x)  // "531"
}

코틀린의 반복문 문법은 단순하면서도 처음 써보는 입장에서는 헷갈릴만한 내용이라 정리해보았습니다. 자주 사용해보면서 적응해보면 금방 익숙해질 것 같습니다.



다양한 자료형의 인자 받기

fun cases(obj: Any) {
    when (obj) {
        1 -> println("Int: $obj")
        "Hello" -> println("String: $obj")
        is Long -> println("Long: $obj")
        else -> println("Unknown")
    }
}

fun main() {
    cases("Hello")
    cases(1)
    cases(5L)

}

Any를 사용하면 다양한 자료형의 인자를 받을 수 있습니다. Java로 치면 Object 같은 느낌이라고 생각할 수 있습니다.



return으로 Unit 반환하기

fun hello(name: String): Unit {
    return Unit
}

코틀린에서 값 없이 return만 하는 경우에는 Unit을 사용합니다. 즉, Unit은 자바 언어에서 반환값이 없는 경우 사용하는 void와 비슷합니다.



사용자 정의 예외

class InvalidNameException(message: String): RuntimeException(message)

사용자 정의 예외는 자바와 똑같기에 간단하게 정리하려 합니다.