Scala在嵌套List中查找元素

tan*_*ano 2 scala

请考虑以下示例:

case class Person(name: String, age: Int)
case class Family(surname: String, members: List[Person])

val families = List(
  Family("Jones",
    List(Person("Indiana", 50), Person("Molly", 20))),
  Family("Black",
    List(Person("Jack", 55), Person("Derek", 12))))
Run Code Online (Sandbox Code Playgroud)

我想编写一个函数来查找List[Family]对象中具有特定名称的人.这是我目前的解决方案:

def find(name: String, families: List[Family]): Option[Person] = {
  families.find(f => f.members.exists(m => m.name == name)).map(f => f.members.find(m => m.name == name).get)
}
Run Code Online (Sandbox Code Playgroud)

是否有更高效,更优雅(和功能)的方式来实现这一目标?

Jea*_*art 6

你可以试试:

families.flatMap(_.members).find(_.name == name)
Run Code Online (Sandbox Code Playgroud)