【发布时间】:2017-08-30 23:08:12
【问题描述】:
我有以下代码:
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)
}
问题是:如果没有getOrElse(Nil),我能否更优雅、更安全地处理Option[Seq[A]]?
list.getOrElse(Nil)
.exists(_.age < 18)
我找到了另一种方法:
list.exists(_.exists(_.age > 18))
注意:我有 Option[Seq[A]] 只是因为 REST 合同。
【问题讨论】:
-
"注意:我有 Option[Seq[A]] 只是因为 REST 合同。"在这种情况下,我怀疑您经常需要将
None和Some(Nil)视为等效,而getOrElse(Nil)具有自动处理所有这些情况的好处,与fold或exists接近。所以我想说getOrElse是更优雅、更安全的方法。
标签: scala scala-collections scala-option