달나라 노트

Kotlin - when 구문 본문

Kotlin

Kotlin - when 구문

CosmosProject 2021. 3. 15. 03:24
728x90
반응형

 

 

 

 

 

Original source = play.kotlinlang.org/byExample/01_introduction/01_Hello%20world

 

 

 

 

Kotlin에선 흔히 쓰이는 swtich 구문 대신에 when 구문을 제공합니다.

이 구문을 처음 본다면 좀 어색할겁니다.

 

fun case(x: Any) {
    when (x) {
        1 -> println("One")
        "Apple" -> println("Fruit")
        is Long -> println("Data type is Long")
        is String -> println("Data type is String")
        !is String -> println("Data type is not String")
        else -> println("None")
    }
}

class empty {

}

fun main() {
    case(1)
    case("Apple")
    case("apple")
    case(2)
    case(0L)
    case(empty())
    case("Pineapple")
}


-- Result
One
Fruit
Data type is String
Data type is not String
Data type is Long
Data type is not String
Data type is String

 

먼저 case라는 함수를 작성합니다.

이 함수는 x라는 변수를 받는데 x의 data type은 Any입니다. 즉, 어떤 data type이건 다 받을 수 있다는 뜻이죠.

그리고 함수의 내용으로 when 구문이 시작됩니다.

받은 x 변수의 값을 가지고 그 값이 무엇인지에 따라 화살표 (->) 이후의 내용을 실행합니다.

 

* 참고

is Long -> x의 Data type이 Long인 경우 true, 그렇지 않은 경우 false 반환

is String -> x의 Data type이 String인 경우 true, 그렇지 않은 경우 false 반환

!is String -> x의 Data type이 String인 경우 false, 그렇지 않은 경우 true 반환

 

 

else는 위에 모든 조건이 다 false라면 마지막으로 실행하는 경우입니다.

 

 

 

 

 

fun case(x: Any): Any {
    var when_result: Any = when (x) {
        1 -> "One"
        "Apple" -> "Fruit"
        is Long -> "Data type is Long"
        is String -> "Data type is String"
        !is String -> "Data type is not String"
        else -> "None"
    }
    return when_result
}

class empty {

}

fun main() {
    println(case(1))
    println(case("Apple"))
    println(case("apple"))
    println(case(2))
    println(case(0L))
    println(case(empty()))
    println(case("Pineapple"))
}



-- Result
One
Fruit
Data type is String
Data type is not String
Data type is Long
Data type is not String
Data type is String

위처럼 when 구문의 결과를 어떤 변수에 할당할 수도 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Kotlin' 카테고리의 다른 글

Kotlin - List  (0) 2021.03.15
Kotlin - Loops  (0) 2021.03.15
Kotlin - Inheritance (상속)  (0) 2021.03.15
Kotlin - Class  (0) 2021.03.15
Kotlin - Null  (0) 2021.03.15
Comments