Scala 向for循环中的列表添加元素 var位置:列表[位置]=列表[位置]() 对于(x

Scala 向for循环中的列表添加元素 var位置:列表[位置]=列表[位置]() 对于(x,scala,scala-collections,Scala,Scala Collections,您的错误在位置:::列表(位置(x,y))行。这是连接列表,但对结果不做任何操作。如果将其替换为位置=位置:::列表(位置(x,y)),您将获得所需的结果 然而,在Scala中有更多的惯用方法来解决这个问题。在Scala中,编写不可变代码是首选的风格(即尽可能使用val而不是var) 以下是几种方法: 使用收益率: var locations: List[Location] = List[Location]() for (x <- 0 to 10; y <- 0 to 10) {

您的错误在
位置:::列表(位置(x,y))
行。这是连接列表,但对结果不做任何操作。如果将其替换为
位置=位置:::列表(位置(x,y))
,您将获得所需的结果

然而,在Scala中有更多的惯用方法来解决这个问题。在Scala中,编写不可变代码是首选的风格(即尽可能使用
val
而不是
var

以下是几种方法:

使用收益率:

var locations: List[Location] = List[Location]()
for (x <- 0 to 10; y <- 0 to 10) {
    println("x: " + x + " y: " + y)
    locations ::: List(Location(x, y))
    println(locations)
}
甚至更短:

val location = List.tabulate(11, 11) { case (x, y) => Location(x, y) }

编辑:刚刚注意到您的
0到10
是包含的。
0到10
是包含的。我已将args更改为tablate到11。

您的错误在
位置:::列表(位置(x,y))
。这是连接列表,但对结果不做任何操作。如果将其替换为
位置=位置:::列表(位置(x,y))
您将获得所需的结果

然而,在Scala中有更多的惯用方法来解决这个问题。在Scala中,编写不可变代码是首选的风格(即尽可能使用
val
而不是
var

以下是几种方法:

使用收益率:

var locations: List[Location] = List[Location]()
for (x <- 0 to 10; y <- 0 to 10) {
    println("x: " + x + " y: " + y)
    locations ::: List(Location(x, y))
    println(locations)
}
甚至更短:

val location = List.tabulate(11, 11) { case (x, y) => Location(x, y) }
编辑:刚刚注意到您的
0到10
是包含的。
0到10
是包含的独占的。我已将参数更改为tablate到11