与 Java 中一样,任何对象都Iterable
可以在增强的 for 循环中使用。我认为 Kotlin 也同样如此,直到我发现事实kotlin.collections.Map
并非如此Iterable
。
来自标准库源代码:
public interface Map<K, out V> {
// ....
Run Code Online (Sandbox Code Playgroud)
如果不是,那么这样的事情怎么可能?:
val map: Map<String, Int> = HashMap()
// ...
for ((s, i) in map) {
println(s)
println(i)
// works perfectly
}
Run Code Online (Sandbox Code Playgroud)
最后,是否可以制作支持此语法的自定义类?如果是这样,怎么办?