在Scala中简化两个过滤器

时间:2017-03-30 20:39:55

标签: scala

有没有办法将此scala代码简化为for comprehension?

val selectedNames = names filter {setOfNames}
val selectedPersons = persons filter {p => seletectedNames contains p.name}

这里我假设人们有一个名字属性。

修改

当然,值名称是

val names = persons map _.name

2 个答案:

答案 0 :(得分:4)

怎么样

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

答案 1 :(得分:3)

我不确定这是一个简化。它只是根据要求通过for理解来做同样的事情。

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