본문 바로가기
kotlin/문법

[kotlin] 조건문 (if, when), 엘비스(elvis)

by 코드 이야기 2020. 12. 28.
728x90

 

kotlinlang.org/docs/reference/control-flow.html#if-expression

 

Control Flow: if, when, for, while - Kotlin Programming Language

 

kotlinlang.org

kotlin 공식 홈페이지의 글을 정리해두었습니다.

 

 

 

if문

// 기본적인 사용 방법
if (a > b) {
    max = a
} else {
    max = b
}

 

 

 

코틀린의 조건문 중에는 삼항연산자가 없습니다. if, else가 삼항연산자의 역할을 충분히 해주기 때문에 없앤 문법입니다. 👍

//삼항연산자 대신
val max = if (a > b) a else b

 

 

이런식으로 변수에 어떤 값을 할당하려고 할 때 바로 if문을 사용할 수도 있습니다.👍

이 경우에는 return a가 아닌 a라고만 적어주면 되고, 

변수가 값을 가지지 않는 경우가 발생하지 않도록 else도 꼭 사용해주어야합니다. 

val max = if (a > b) {
    //print("Choose a")
    a
} else {
    //print("Choose b")
    b
}

print(max)

 

 

 

when

when이란 switch case문과 같은 것입니다.

 

<기본 형태>

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> {
        print("x is neither 1 nor 2")
    }
}
// 여려 경우를 한 번에 처리 (',' 이용)
when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}
// x에 있는 값이 1~10, 10~20, 20~30, 그 외일 때에 따라 다르게 작동
val validNumbers = 10..20

when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 20..30 -> print("x is outside the range")
    else -> print("none of the above")
}
// hasPrefix함수는 x가 string인지 아닌지에 따라 다르게 작동한다.
fun hasPrefix(x: Any) = when(x) {
    is String -> {
        x.startsWith("prefix")
        println("string! aaaand prefix!")
    }
    else -> {
        false
        println("not string! false!")
    }
}

 

 

 

 

elvis

kotlinlang.org/docs/reference/null-safety.html#elvis-operator

 

Null Safety - Kotlin Programming Language

 

kotlinlang.org

var n: Int? = null  // ?를 사용해 null을 가질 수 있게 만들어준 후 null을 담아
var m = n?: 100  // n이 null이라면 m에는 100이 들어가고, null이 아니라면 n에 있는 값을 담아줌.

print(m)

elvis연산자를 이용해 null에 대응을 해줄 수 있다.👍👍

 

 

 

728x90

'kotlin > 문법' 카테고리의 다른 글

[kotlin] collection (List, Set, Map)  (0) 2021.01.14
[kotlin] arrays 배열  (0) 2021.01.14
[kotlin] Functions 함수  (0) 2021.01.13
[kotlin] loop (반복문) for, while, do while  (0) 2020.12.30
[kotlin] 입출력과 사칙연산  (0) 2020.12.23

댓글