我有一个看起来像这样的函数:
fun MyInput?.toOutput() : Output? {
if (this == null) return null
return Output(this.someValue)
}
在我知道 myMyInput
不为空的地方(例如,在将 ainput: MyInput
作为参数的方法中),我希望能够使用input.toOutput
asOutput
而不是Output?
我试过使用
contract {
returnsNotNull() implies (this@toOutput != null)
}
但这意味着倒退。这告诉我,如果toOutput
返回非空类型,则 myinput
是非空的。我想根据参数告诉分析器有关返回值的信息。在 Java 中,我可以使用org.jetbrains.annotations.@Contract("null -> null ; !null -> !null")
它来完成此操作。
有没有办法在 Kotlin 中做到这一点?