Kotlin:不再可能使用destructured Entry迭代地图吗?错误?

时间:2015-12-24 22:55:08

标签: dictionary for-loop iteration kotlin

似乎使用最新的Kotlin更新,您无法再遍历具有解构Entry的地图。例如:

val map = HashMap<Int, String>()

for ((i, s) in map) { // compiler error here
    ... // code
}

enter image description here

编译器错误为For-loop range must have an iterator() method

此功能以前按预期工作,遍历地图中的每个条目。我还尝试使用map.entriesmap.entrySet()(已弃用)以及以下内容:

enter image description here

现在迭代地图的惯用方法是什么?这是一个错误吗?

2 个答案:

答案 0 :(得分:1)

看起来像IDE和Gradle插件中的错误。我尝试了以下方法:

  • 使用Kotlin 4584创建了一个干净的Gradle项目并粘贴了您的代码。那里出现了错误,就像你的出现一样。
  • 将Kotlin版本更改为上一个版本4583,然后重新导入项目。代码汇编得很好。
  • 将Kotlin版本更改回4584,并且错误没有显示出来,代码编译成功。

没有以下更改可以让我重现此项目中的错误,但我可以使用新的错误。

答案 1 :(得分:0)

奇怪的是,IntelliJ让我“更新”到Kotlin插件2428,这导致了这一点。

下载JetBrain的插件存储库(此处为Kotlin插件:http://plugins.jetbrains.com/plugin/6954?pr=idea)并在IntelliJ中选择Install from disk...解决了问题。

相关问题