如何在for循环中追加元素列表:Scala

LUZ*_*UZO 0 scala

我想根据条件将元素列表附加到另一个列表.例如:找到下面的代码.

package test

object main {
 def main(args: Array[String]): Unit ={
   val a = List(1,2,3,4,5)
   val b= List[Int]()
   for(x <- a){
     if (x>3){
       b:+x
     }
   }
   println(b)
 }
}
Run Code Online (Sandbox Code Playgroud)

当我执行这个我得到空列表.

mar*_*ran 5

List班是Scala不可改变的,所以你不能元素添加到它.如果你真的需要一个可变列表,你可以使用MutableList.

val a = List(1,2,3,4,5)
val b= MutableList[Int]()
for (x <- a) {
  if (x > 3) {
    b += x
  }
}
println(b)
Run Code Online (Sandbox Code Playgroud)

但是,在像Scala这样的函数式语言中,最佳实践是使用不可变集合.使用该filter方法可以非常轻松地完成您的任务.

val a = List(1,2,3,4,5)
val b = a.filter(_ > 3)
Run Code Online (Sandbox Code Playgroud)