개요

코틀린은 널 체크에 유연하게 대처하고 있다. 편하다. 근데 이번에 실수한것도 있고 그래서 기록하기.

 

 

아래의 테스트 코드는 실패한다. 왜일까?

class Nullable {

    @Test
    @DisplayName("nullable 을 잘쓰자")
    fun nullableToStringTest() {
        getPersonAge(Person(10)) shouldBe "10"
        getPersonAge(Person()) shouldBe "empty age"
    }

    private fun getPersonAge(person: Person? = null): String {
        return person?.age.toString() ?: "empty age"
    }
}

data class Person(
    val age: Int? = null
)

 

empty age 가 반환되지 않는다. "null" 이 반환된다.

empty age 를 반환하고 싶다면 아래와 같이 변경해야 한다.

return person?.age?.toString() ?: "empty age"

 

 

변수가 null 을 허용한다면 변수까지 물음표(?)를 끝까지 붙이자.

 

Posted by doubler
,