我想编写一个返回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?加一个Unitornull在最后,也许?这有效,但看起来相当难看。有没有更好的方法来做到这一点?