var _age: Int? = 0

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

这仍然给我提供了一个空安全的编译错误,但是在这种情况下如何使用>, =或

最佳答案

var age : Int? = 0

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

另一种解决方案是使用委托(delegate):
var age : Int by Delegates.notNull()
public val isAdult : Boolean
    get () = age >= 18

因此,如果您尝试获取年龄或在实际分配年龄之前检查isAdult,则会获得异常而不是null。

无论如何,我认为年龄= 0是某种魔术,有一天可能会导致问题(甚至产品问题)。

关于kotlin - 在Kotlin中对可空整数使用 “greater than”和 “less than”比较的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29223898/

10-12 00:28
查看更多