如何惯用地转换Kotlin中的可空类型?
我是Kotlin的新手,我正在寻找将以下代码改写为更优雅的方式的建议如何惯用地转换Kotlin中的可空类型?,kotlin,Kotlin,我是Kotlin的新手,我正在寻找将以下代码改写为更优雅的方式的建议 val ts: Long? = 1481710060773 val date: Date? if (ts != null) { date = Date(ts) } 我试过让,但我认为它并不比原来的好 val ts: Long? = 1481710060773 val date: Date? ts?.let { date = Date(ts) } 谢谢。您可以这样使用通话结果: val date = ts
val ts: Long? = 1481710060773
val date: Date?
if (ts != null) {
date = Date(ts)
}
我试过让,但我认为它并不比原来的好
val ts: Long? = 1481710060773
val date: Date?
ts?.let {
date = Date(ts)
}
谢谢。您可以这样使用通话结果:
val date = ts?.let(::Date)
您可以在中找到有关使用:
语法的函数引用的更多信息
如果要为其指定常量值,则不需要将
ts
指定为可为空的长类型long?
。然后,类型Long
被推断为ts
,不再需要进行空检查。您的第一次剪接一定没有编译,因为它在Kotlin中是不可能的代码(val date
并不总是初始化)。请更正它或使它更具体我确信它是可编译的(至少它在Android Studio中与Kotlin 1.0.5-2一起工作)。@voddan完全可以声明但不能初始化val
。唯一可能发生编译错误的地方是在分配之前访问它,并尝试多次分配它@如果Forests是的,它可以编译,但如果仅使用该代码,则不能以任何方式使用date
。请把代码填写完整。换句话说,如果ts
为null
,则必须有一个date
的替代赋值。我在这里不是学究;)这是一个非常神秘的解决方案。这肯定不是惯用语。
val ts = 1481710060773L
val date = Date(ts)