(注意:下面的 Kotlin Koans 之一有潜在的剧透。)
给定一个采用函数文字的高阶函数,如下所示:
fun <K, V> buildMap(build: MutableMap<K, V>.() -> Unit): Map<K, V> {
// How does java.util.HashMap satisfy the MutableMap interface?
// Does Kotlin support ducktyping?
val map = HashMap<K, V>()
map.build()
return map
}
Run Code Online (Sandbox Code Playgroud)
java.util.HashMap 如何满足针对的MutableMap
接口build
?Kotlin 是否支持某种类型的鸭子类型,或者这是 Kotlin 语言中仅针对属于 JDK 的某些类的特殊情况?
我查看了有关接口的 Kotlin 文档并进行了一些搜索,但找不到任何似乎可以解释这一点的内容。
《Kotlin in Action》一书中关于ArrayList
和 的内容如下HashMap
:
\n\n\nKotlin 将它们视为分别继承自 Kotlin\xe2\x80\x99s
\nMutableList
和MutableSet
接口。
所以基本上是的,正如您所提议的,这是这些集合的一个特例,在 Kotlin 编译器中以某种方式实现。不幸的是,这就是他们提供的所有细节,因此如果您想了解更多信息,您可能必须深入研究编译器的源代码。
\n\n我想主要的结论是,这不是您可以自己使用的语言功能。
\n 归档时间: |
|
查看次数: |
1051 次 |
最近记录: |