在Kotlin中使用“大于”,“小于”比较可空整数的正确方法是什么?

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 } 

另一种解决方案是使用代表:

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

所以,如果你尝试哟年龄或检查isAdult实际分配年龄之前,你会得到异常,而不是空

无论如何,我相信年龄= 0是某种神奇,有一天可能会导致问题(甚至刺激问题)

我使用空合并运算符从可空的Int? 不可空的Int:

 var age: Int? = 0 public var isAdult: Boolean? = null get() = if(age == null) null else (age ?: 0 >= 18)