Java 使用.map功能更新scala不可变序列
我正在为一所大学做俄罗斯方块作业,在那里必须使用不变的数据结构 问题 我想做的是使用seq.map函数遍历seq的所有值,并用基于旧值的新值替换它们。由于某些原因,这与我在网上看到的示例不一样。我做错了什么Java 使用.map功能更新scala不可变序列,java,scala,coordinates,immutability,seq,Java,Scala,Coordinates,Immutability,Seq,我正在为一所大学做俄罗斯方块作业,在那里必须使用不变的数据结构 问题 我想做的是使用seq.map函数遍历seq的所有值,并用基于旧值的新值替换它们。由于某些原因,这与我在网上看到的示例不一样。我做错了什么 class Point(x : Int, y : Int) { } val bodyPosition: Seq[Point] = Seq[Point](new Point(-1,0), new Point(0,0), new Point(1,0), new Point(2,0)) bod
class Point(x : Int, y : Int) {
}
val bodyPosition: Seq[Point] = Seq[Point](new Point(-1,0), new Point(0,0), new Point(1,0), new Point(2,0))
bodyPosition.map(map => {new Point(-map.y, map.x)})
seq中的数据保持不变。“是的,因为它是不可变的,这就是重点。但是,如果你仔细观察地图,你会发现地图返回了一个新的集合,所以你只需将它分配给某个变量——路易斯·米格尔·梅西亚·苏亚雷斯。”
“是的,因为它是不可变的,这就是重点。但是,如果你靠近地图,你会看到地图返回一个新的集合,所以你只需将它分配给某个变量——路易斯·米格尔·梅西亚·苏亚雷斯”
是的,因为它是不可变的,这就是重点。但是,如果您仔细查看(文档)[您将看到
map
返回一个新集合,因此您只需将其分配给某个变量,如val newBodyPosition=bodyPosition.map(…)
BTW,您不需要map
中看起来很糟糕的大括号。您可以seq.map(x=>y)
或seq.map{x=>y}
-另外,Point
应该是一个案例类。您应该提供一个使用此类评估的示例,然后我们可以帮助您应用不可变集合是的,因为它是不可变的,这就是重点。但是,如果您仔细查看(文档)[您将看到map
返回一个新集合,因此您只需将其分配给一些变量,如val newBodyPosition=bodyPosition.map(…)
BTW,您不需要在map
中使用看起来很糟糕的大括号。您可以seq.map(x=>y)
或seq.map{x=>y}
-另外,点
可能应该是一个案例类。您应该提供此类评估的使用示例,然后我们可以帮助您应用不可变集合
base class Point(x : Int, y : Int){}
class Gamelogic(){
val bodyPosition: Seq[Point] = Seq[Point](new Point(-1,0),
new Point(0,0), new Point(1,0), new Point(2,0))
val newBodyPosition = bodyPosition.map(map => {new Point(-map.y, map.x)})
}