我有以下代碼:Scala的選項[SEQ [A]]存在
case class Person(name: String, age: Int)
object Launcher extends App {
val people = Option(Seq(Person("Andrii", 20), Person("John", 35), Person("Sam", 15)))
def filterPeople(list: Option[Seq[Person]]): Boolean =
list.getOrElse(Nil)
.exists(_.age < 18)
assert(filterPeople(people) == true)
}
的問題是:我可以處理Option[Seq[A]]
更優雅和安全而不getOrElse(Nil)
?
list.getOrElse(Nil)
.exists(_.age < 18)
我已經找到另一種方法是:
list.exists(_.exists(_.age > 18))
注:我有Option[Seq[A]]
只是因爲REST合同。
「注:我有僅僅因爲REST合同,選項[Seq [A]]。「 在這種情況下,我懷疑您經常需要將'None'和'Some(Nil)'視爲等價物,並且'getOrElse(Nil)'會自動處理所有這些情況,以「摺疊」或「存在」的方式。 所以我會說'getOrElse'是更優雅和安全的方法。 –