Scala 处理选项[A],其中函数将A作为参数
我有一个case类Scala 处理选项[A],其中函数将A作为参数,scala,Scala,我有一个case类Foo,它有一个字段baz:Option[List[Bar]] 另外,我还有一个函数-def(baz:List[Bar]) 我需要将列表[Bar]传递到f() 最好的方法是什么 case class Baz(b: Int) case class Foo(bazs: Option[List[Baz]]) val foo = Foo(Option(List(Baz(1), Baz(2)))) foo.bazs.map(list => f(list)) 选项是一个单子,如果
Foo
,它有一个字段baz:Option[List[Bar]]
另外,我还有一个函数-def(baz:List[Bar])
我需要将列表[Bar]
传递到f()
最好的方法是什么
case class Baz(b: Int)
case class Foo(bazs: Option[List[Baz]])
val foo = Foo(Option(List(Baz(1), Baz(2))))
foo.bazs.map(list => f(list))
选项
是一个单子,如果它是某些
我们将对其应用映射,否则如果它是无
则从REPL:
scala> def f(b: List[Baz]) = b.foreach(println)
f: (b: List[Baz])Unit
scala> foo.bazs.map(list => f(list))
Baz(1)
Baz(2)
res1: Option[Unit] = Some(())
scala> val foo = Foo(None)
foo: Foo = Foo(None)
scala> foo.bazs.map(list => f(list))
res2: Option[Unit] = None
选项
是一个单子,如果它是某些
我们将对其应用映射,否则如果它是无
则从REPL:
scala> def f(b: List[Baz]) = b.foreach(println)
f: (b: List[Baz])Unit
scala> foo.bazs.map(list => f(list))
Baz(1)
Baz(2)
res1: Option[Unit] = Some(())
scala> val foo = Foo(None)
foo: Foo = Foo(None)
scala> foo.bazs.map(list => f(list))
res2: Option[Unit] = None
该选项很好,因为它会在没有项目时强制您使用夹点。在
列表
的情况下,选项
可能是多余的,因为已经存在相应的空
,即它们都是单子:
f(myOptList getOrElse Nil)
我想说的是,你应该只有一个
列表。否则,您将处理一个三元组:空的、有项目的和空的。选项很好,因为它会迫使您在没有项目时抓住它们。在列表
的情况下,选项
可能是多余的,因为已经存在相应的空
,即它们都是单子:
f(myOptList getOrElse Nil)
我想说的是,你应该只有一个列表。否则,您将处理一个三元组的情况:一个是空的,一个有项目且为空的