【发布时间】:2015-11-27 05:27:05
【问题描述】:
我目前正在学习 scala,但对遇到的错误感到困惑。我正在尝试使用不同的容器,目前我有一个地图列表,每个地图共享相同的键。我正在尝试使用 for 循环遍历列表并将与键“startlocation”相对应的值放入 Node 类型的数组(我创建的类),但我似乎无法获得正确的语法。它告诉我我的键是一个不正确的参数,同时试图从我在列表中的当前映射中获取该键的值。
这段代码有什么问题,我应该怎么做才能修复它?
class Node{
var visited = false;
var mDistance = 10000;
var prevLoc = " ";
}
object test{
def main(args: Array[String]){
var i = 0;
var l = List(Map("startlocation" -> "Kruthika's abode", "endlocation" -> "Mark's crib", "distance" -> 10),
Map("startlocation" -> "Mark's Crib", "endlocation" -> "Kirk's Farm", "distance" -> 9));
var b = new Array[Node](l.size);
var index = 0;
for(i <- l){
b(index).prevLoc = i("startlocation"); // This is the line where the error occurs
index++;
}
}
}
具体错误:类型不匹配;找到:任何必需的:字符串
此错误突出显示我上面评论的行中的“startlocation”。
【问题讨论】:
-
注意:
for推导式会创建自己的局部变量,因此for (i <- l)会创建i类型的Map[String,Any]。你是var i = 0创建了一个从未使用过的Int类型的变量。
标签: scala