问题是确认我是否正确理解了选项的使用。
我注意到方法collect返回List,而collectFirst返回一个Option。是因为collect可以返回多个值或者没有(没有一个由空列表表示)。另一方面,collectFirst返回单个值(或者什么都没有),因此我们将永远不会返回“列表”,因此它会更多地使用选项
答案 0 :(得分:8)
你是对的:
scala> (1 to 5).collect { case i if i % 2 == 0 => "*" * i }
res: scala.collection.immutable.IndexedSeq[String] = Vector(**, ****)
scala> (1 to 5).collectFirst { case i if i % 2 == 0 => "*" * i }
res: Option[String] = Some(**)
scala> (1 to 5).collect { case i if i > 10 == 0 => "*" * i }
res: scala.collection.immutable.IndexedSeq[String] = Vector()
scala> (1 to 5).collectFirst { case i if i > 10 == 0 => "*" * i }
res: Option[String] = None