collect vs collectFirst-为什么返回值的类型不同-Scala

Man*_*dha 2 scala

问题是确认我是否正确理解Option的使用。

我注意到方法collect返回一个List,而collectFirst返回一个Option。是否是因为collect可以返回多个值或不返回任何值(没有一个由空列表表示)。另一方面,collectFirst返回单个值(或不返回任何值),因此使用Option会更多,因为我们永远不会返回“列表”

Jea*_*art 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
Run Code Online (Sandbox Code Playgroud)