blu*_*sky 2 java scala scala-java-interop
我正在尝试将以下Java代码转换为Scala:
Map<String, List<String>> allEntriesMap = getEntries();
for (Map.Entry<String, List<String>> allEntriesMapEntry : allEntriesMap
.entrySet()) {
}
Run Code Online (Sandbox Code Playgroud)
以下是上述Java代码的当前Scala版本:
var allEntriesMap : Map[String, List[String]] = getEntries();
for (allEntriesMap.entrySet[String, List[String]] allEntriesMapEntry :
allEntriesMap.entrySet()) {
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误的行
for (allEntriesMap.entrySet[String, List[String]] allEntriesMapEntry :
Run Code Online (Sandbox Code Playgroud)
非法启动简单模式
如何完成上面的代码,以便它执行相同的Java功能,但用Scala编写?
问题是您使用了不正确的语法.这个
for (allEntriesMap.entrySet[String, List[String]] allEntriesMapEntry : allEntriesMap.entrySet()) {
}
Run Code Online (Sandbox Code Playgroud)
应该写成:
for (entry: Map.Entry[String, List[String]] <- allEntriesMap.entrySet()) {
}
Run Code Online (Sandbox Code Playgroud)
或者干脆
for (entry <- allEntriesMap.entrySet) {
}
Run Code Online (Sandbox Code Playgroud)
此外,如果您正在使用java集合类型,则必须导入scala.collections.JavaConversions._范围(这将隐式地将java集合转换为scala集合,因此您可以对它们使用所有操作集).