扩展函数内部的不可变val null检查

时间:2018-08-07 09:10:23

标签: kotlin

当我有一个不可变的val可选项时,编译器会跟踪有关我对null执行的检查的信息,并且可以将该变量视为非null并直接在if条件中调用它。

val s: String? = "test"

if (s != null) {
   s.startsWith("3") // This works
}

if (!s.isNullOrEmpty()) {
    s.startsWith("3") // Not working
}

是否可以检查扩展功能并让编译器知道它?

1 个答案:

答案 0 :(得分:4)

在Kotlin中尚不可用。

JetBrains(https://discuss.kotlinlang.org/t/status-of-kotlin-internal-contracts/6392)目前正在开发一种称为“合同”的功能–与他们对Java代码使用their own @Contract annotation所做的相似,但将得到编译器的支持

但是,它处于早期阶段,还没有发布日期。