重构声明和Map
也许最好的方法转换Map的方法是这样的:
for ((key, value) in map) {
// do something with the key and the value
}
为了实现这个,我们需要
- 通过iterator()函数将Map展现为一个序列值的集合
- 通过component1()和component2()函数来展现每个元素的键值对
标准库提供这样的扩展:
operator fun <K, V> Map<K, V>.iterator(): Iterator<Map.Entry<K, V>> = entrySet().iterator()
operator fun <K, V> Map.Entry<K, V>.component1() = getKey()
operator fun <K, V> Map.Entry<K, V>.component2() = getValue()
因此你可以自由地使用重构声明在含有Map的for循环中(还有数据类集合实例等)。