본문 바로가기
프로그래밍 놀이터/Kotlin, Coroutine

[kotlin] safe when statement

by 돼지왕 왕돼지 2020. 8. 9.
반응형


kotlin safe when statement


http://blog.karumi.com/kotlin-android-development-6-months-into-it/


-

when 을 expression 으로 사용될 때에는 cover 하지 않는 케이스에 대한 else 가 꼭 필요하다.

하지만 statement 로 사용될 때에는 꼭 쓰지 않아도 괜찮다. (강요되지 않는다.)

이 때문에 모든 case 를 커버하는지 알 수 없었다.


아래와 같이 Any? 에 대한 extension 으로 exhaustive 를 줌으로써 expression 처럼 쓰도록 하여 에러를 줄일 수 있다.

val Any?.exhaustive get() = Unit

private fun onStatusChanged(status:Status){
    when(status){
        is Status.Idle -> // ...
        is Status.Fetching -> // …
        is Status.Fetched -> // ...
    }.exhaustive
}


-

끝!!!




반응형

댓글