What is the right way of using “greater than”, “less than” comparison on nullable integers in Kotlin?

前端 未结 6 1702
南方客
南方客 2021-01-03 19:00
var _age: Int? = 0

public var isAdult: Boolean? = false
   get() = _age?.compareTo(18) >= 0 

This still gives me a null-safety, compile error,

6条回答
  •  無奈伤痛
    2021-01-03 19:47

    var age : Int? = 0
    
    public val isAdult : Boolean?
        get() = age?.let { it >= 18 }
    

    The other solution would be using delegates:

    var age : Int by Delegates.notNull()
    public val isAdult : Boolean
        get () = age >= 18
    

    So if you try to get age or check isAdult before age was actually assigned then you'll get exception instead of null.

    Anyway I believe age = 0 is some kind magic that one day may lead to issue (even prod issue).

提交回复
热议问题