如何惯用地转换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

我是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?.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)