fun test() {
class Test(val foo: ((Double, Double) -> Double)?)
val test = Test(null)
if(test.foo != null) test.foo(1.0, 2.0)
}
Run Code Online (Sandbox Code Playgroud)
上面的代码生成错误:
Kotlin:Reference有一个可空类型'((Double,Double) - > DoubleArray)?',使用显式'?.invoke()'来代替类似函数的调用.
如果我按照错误建议并将调用更改为test.foo?.invoke(1.0, 2.0),则代码编译但IntelliJ现在报告
对'((Double,Double) - > DoubleArray)类型的非null接收器进行不必要的安全调用
根据这个建议,我最终test.foo.invoke(1.0, 2.0)认为可以互换test.foo(1.0, 2.0); 为什么不是这里的情况?
当foo不是类成员时,事情就像我期望的那样:
fun test2() {
val foo: ((Double, Double) -> Double)? = null
if(foo != null) foo(1.0, 2.0)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |