Kotlin:迭代一个具有解构条目的地图是不是可能的? 错误?

看起来就像最新的Kotlin更新一样,您不能再通过具有解构Entry地图来迭代。 例如:

 val map = HashMap<Int, String>() for ((i, s) in map) { // compiler error here ... // code } 

在这里输入图像描述

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

此功能以前按预期工作,遍历地图中的每个条目。 我也尝试使用map.entriesmap.entrySet() (不建议使用)和这些:

在这里输入图像描述

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

看起来像IDE和Gradle插件中的一个错误。 我尝试了以下内容:

  • 用Kotlin 4584创建一个干净的Gradle项目并粘贴你的代码。 错误在那里,和你的发生一样。
  • 将Kotlin版本更改为前一版本4583,并重新导入该项目。 代码编译得很好。
  • 将Kotlin版本更改回4584,并且该错误未显示,代码编译成功。

没有下面的变化可以让我重现这个项目中的错误,但我可以在一个新的。

奇怪的IntelliJ提供了我“更新”Kotlin插件2428造成这一点。

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