請看下面的例子:斯卡拉找到元素嵌套列表
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))))
我想寫找到一個人與一個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)
}
是否有更高效和優雅(和功能)的方式來實現這一目標?
'families.flatMap(_。members).find(_。name == name)'做這項工作。但是你的數據模型顯得很糟糕,因爲沒有辦法得到'Person'的姓氏。 – ziggystar
@ziggystar取決於你想如何處理它,看到我的答案在下面 –