Dictionary Kotlin:是否不再可能使用解构条目迭代映射?缺陷
使用最新的Kotlin更新,您似乎无法再使用解构的Dictionary Kotlin:是否不再可能使用解构条目迭代映射?缺陷,dictionary,for-loop,iteration,kotlin,Dictionary,For Loop,Iteration,Kotlin,使用最新的Kotlin更新,您似乎无法再使用解构的条目迭代地图。例如: val map = HashMap<Int, String>() for ((i, s) in map) { // compiler error here ... // code } val-map=HashMap() 对于映射中的((i,s){//编译器错误 …//代码 } 编译器错误为“循环范围必须具有迭代器()方法” 此功能以前按预期工作,遍历映射中的每个条目。我还尝试使用map.entri
条目
迭代地图。例如:
val map = HashMap<Int, String>()
for ((i, s) in map) { // compiler error here
... // code
}
val-map=HashMap()
对于映射中的((i,s){//编译器错误
…//代码
}
编译器错误为“循环范围必须具有迭代器()方法”
此功能以前按预期工作,遍历映射中的每个条目。我还尝试使用map.entries
和map.entrySet()
(已弃用)以及以下内容:
现在迭代地图的惯用方法是什么?这是一个bug吗?看起来像是IDE和Gradle插件中的bug。我尝试了以下方法:
- 用Kotlin 4584创建了一个干净的Gradle项目,并粘贴了代码。那只虫子就在那里,和你的遭遇一样
- 将Kotlin版本更改为以前的版本4583,并重新导入项目。代码编译得很好
- 将Kotlin的版本更改回4584,但错误没有显示出来,代码编译成功李>
下面的任何更改都不能让我在这个项目中重现这个bug,但我可以在一个新的项目中重现。奇怪的是,IntelliJ让我“更新”Kotlin plugin 2428,这就是造成这个问题的原因
下载JetBrain的插件库(Kotlin plugin here:)并在IntelliJ中选择从磁盘安装…
解决了这个问题。这很有趣!我通过从JetBrain的插件库()下载插件,然后从磁盘安装插件来修复它。@Jire,这看起来更奇怪,因为在我创建了两个项目之后,我无法复制相同的插件,我可以…@Jire,我可以再次复制它:我只需要接受IDE对Gradle文件的建议。但是,该错误在任何项目重新导入时都会消失,因此它似乎是一个小错误。您的问题缺少帮助回答问题所需的信息。例如,您使用的Kotlin的哪个版本有效,而哪个版本无效?另外,如果你认为这是一个bug,那么你应该向Kotlin问题跟踪者报告,我认为这个问题现在可能是无效的,它是由使用Kotlin的一个非常旧的插件引起的,所以这个问题是基于不知道你使用的是Kotlin的旧版本。作者能否在问题的顶部添加一条注释,说明当前Kotlin没有问题,并且问题已经结束?问题是“如果我在《意外》中使用了非常旧的Kotlin版本,为什么当前的功能不起作用?”