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

Kotlin 扩展函数内部的不可变val null检查,kotlin,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 } 是否可以在扩展函数中进行该检查并让编译器知道它?这在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
}

是否可以在扩展函数中进行该检查并让编译器知道它?

这在Kotlin中尚不可用

JetBrains()目前开发了一个名为“Contracts”的功能,它与Java代码的功能类似,但将得到编译器的支持


不过,它还处于早期阶段,目前还没有发布日期。

基本上,您要求的是尚未提供的合同。看到和