在Scala中简化两个过滤器

在Scala中简化两个过滤器,scala,Scala,有没有办法将这个scala代码简化为一个简单的代码以便于理解 val selectedNames = names filter {setOfNames} val selectedPersons = persons filter {p => seletectedNames contains p.name} 这里我假设人有一个name属性 编辑 当然,值名称是通过以下方式获得的 val names = persons map _.name 我不确定这有多简单。它只是按照要求通过进行理解,做

有没有办法将这个scala代码简化为一个简单的代码以便于理解

val selectedNames = names filter {setOfNames}
val selectedPersons = persons filter {p => seletectedNames contains p.name}
这里我假设人有一个name属性

编辑

当然,值名称是通过以下方式获得的

val names = persons map _.name

我不确定这有多简单。它只是按照要求通过
进行理解,做同样的事情

val selectedPersons = for {
  p <- persons
  if setOfNames(p.name)
} yield p
val selectedPersons=for{
怎么样

val selectedPersons = persons filter { person => setOfNames contains person.name }

因为理解被用作应用一系列
filter
flatmap
map
函数的语法糖。这里你错过了
map
flatmap
部分;)就我从你的代码中所能理解的,我认为完成任务的一个简单方法是直接过滤
个人ns
通过他们的名字列出,不是吗?