Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有比较和循环的Scala内联追加_Scala_Foreach_Comparison - Fatal编程技术网

带有比较和循环的Scala内联追加

带有比较和循环的Scala内联追加,scala,foreach,comparison,Scala,Foreach,Comparison,我正在寻找Scala语法,以便使用比较将其附加到ArrayBuffer。我有两个不同类型的数组,所以我不能简单地使用交集。本质上,这就是我想要的: val allPeople : ArrayBuffer[Person] = ... val result = ArrayBuffer[Person]() val acceptableAges : ArrayBuffer[Age] = ... // Simplify below for (p <- allPeople if acceptable

我正在寻找Scala语法,以便使用比较将其附加到ArrayBuffer。我有两个不同类型的数组,所以我不能简单地使用交集。本质上,这就是我想要的:

val allPeople : ArrayBuffer[Person] = ...
val result = ArrayBuffer[Person]()
val acceptableAges : ArrayBuffer[Age] = ...

// Simplify below
for (p <- allPeople if acceptableAges.indexof(p.age) >= 0) 
    result.append(p)
val allPeople:ArrayBuffer[Person]=。。。
val结果=阵列缓冲[个人]()
val acceptableAges:ArrayBuffer[年龄]=。。。
//简化如下
对于(p=0)
结果追加(p)

有没有一个圆滑的解决方案?Scala新手。

请尽量避免使用可变变量(这需要时间,但每次看到可变
var
时都要问自己)。有scalafp是有原因的

您需要的是一个
.filter
函数

举个例子

scala> final case class Age(age: Int)
defined class Age

scala> final case class Person(name: String, age: Age)
defined class Person
鉴于:

scala> val allPeople = List(Person("prayagupd", Age(100)), Person("steven wilson", Age(200)))
allPeople: List[Person] = List(Person(prayagupd,Age(100)), Person(steven wilson,Age(200)))

scala> val acceptableAges : List[Age] = List(Age(100), Age(150))
acceptableAges: List[Age] = List(Age(100), Age(150))
使用
.filter
过滤数据:

scala> allPeople.filter(p => acceptableAges.contains(p.age))
res2: List[Person] = List(Person(prayagupd,Age(100)))

很漂亮,谢谢你。我同意。我来自C++,所以我遇到了一些问题,这些问题可以用函数编程来解决。还在学习。非常感谢。我完全理解,但是在scala中不使用可变表是非常值得的。欢迎来到FP和scala。我可以告诉你这是一个非常好的社区