gpt4 book ai didi

kotlin - 告诉Kotlin编译器任何先前的可调用函数已经检查过null的方法

转载 作者:行者123 更新时间:2023-12-02 12:55:06 29 4
gpt4 key购买 nike

如果我有类似的代码片段

val myNullableString : String?
val resultingString = if (myNullableString.isNullOrBlank())
myNullDefaultString else String.format(myNullableString!!, someOtherString)

我必须在 myNullableString!!中使用 String.format(),因为编译器将无法确定 isNullOrBlank()包含空检查。这是正确的还是有什么办法告诉编译器某个函数将推断实例不为null?

最佳答案

Kotlin 1.3引入了一个名为contracts的概念。从现在开始,您可以告诉编译器已执行空检查。它已经为标准库中的所有必要功能实现(也适用于isNullOrBlank())。

因此,您的示例现在无需!!即可编译

val myNullableString: String? = null

val result = if (myNullableString.isNullOrBlank()) {
"default"
} else {
String.format(myNullableString, "hello") // myNullableString is smart-casted to String
}

关于kotlin - 告诉Kotlin编译器任何先前的可调用函数已经检查过null的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321263/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com