在 Kotlin/JS 互操作中 return `dynamic` 的 lambda 的奇怪行为
Strange behaviour of lambdas that return `dynamic` in Kotlin/JS interop
我想编写一个 returns 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
或 null
?那行得通,但看起来很丑陋。有更好的方法吗?
我相信你能找到答案here,因为你的问题看起来与这个主题相似
我想编写一个 returns 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
或 null
?那行得通,但看起来很丑陋。有更好的方法吗?
我相信你能找到答案here,因为你的问题看起来与这个主题相似