1

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

4

1 回答 1

1

我相信您可以在这里找到答案,因为您的问题看起来与此主题相似

于 2021-11-25T10:46:53.443 回答