var _age: Int? = 0
public var isAdult: Boolean? = false
get() = _age?.compareTo(18) >= 0
这仍然给我一个 null-safety,编译错误,但是在这件事上我该如何使用 >、= 或
最佳答案
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/
相关文章:
android - 应用程序模块中引用的 android 库模块的“ Unresolved 引用”错
java - 错误 :Kotlin: Unsupported plugin option: org.
android - 如何混淆我用 kotlin 编码的 sdk(并摆脱元数据)
android - kotlin 'onCreate' 不会覆盖任何内容
android - 为全屏 Activity 摆脱不必要的根布局
javafx - Kotlin 。基本 JavaFX 应用程序
spring - kotlin 和 @Valid Spring 注解