我想编写一个返回dynamic
以赋值操作结尾的 lambda 函数。以下不进行类型检查:
var a: Int?
val f: () -> dynamic = {
a = 42
}
注意:为了使其最小化,这个例子有些人为。实际上,我需要将此 lambda 分配给XMLHttpRequest.onreadystatechange
,因此需要类型。
f
() -> Unit
删除类型注释时具有类型。为什么不能() -> Unit
投到() -> dynamic
?
此外,这个示例如何进行类型检查?
val f2: () -> dynamic = {
print("foo")
}
f2
没有注解的也有类型() -> Unit
。为什么f2
进行类型检查f
而不进行类型检查?
最后,什么是合适的写作方式f
?加一个Unit
ornull
在最后,也许?这有效,但看起来相当难看。有没有更好的方法来做到这一点?