Nat*_*han 7 functional-programming scala
我经常看到这两种模式用于向Seq附加一个Optional值:
def example1(fooList: Seq[Foo], maybeFoo: Option[Foo]): Seq[Foo]) = {
if (maybeFoo.isDefined)
fooList :+ maybeFoo.get
else
fooList
}
def example2(fooList: Seq[Foo], maybeFoo: Option[Foo]): Seq[Foo]) = {
maybeFoo match {
case Some(foo) => fooList :+ foo
case None => fooList
}
}
Run Code Online (Sandbox Code Playgroud)
这两种方法都有效,但它们看似冗长和丑陋.是否有现有的操作员或方法可以更自然地/功能性地完成此操作?
谢谢!
Ang*_*ese 19
Option隐式转换为包含1或0项的序列,因此以下工作:
scala> val opt = Some("a")
opt: Some[String] = Some(a)
scala> val nope = None
nope: None.type = None
scala> val seq = Seq("a", "b", "c")
seq: Seq[String] = List(a, b, c)
scala> seq ++ opt
res3: Seq[String] = List(a, b, c, a)
scala> seq ++ nope
res4: Seq[String] = List(a, b, c)
Run Code Online (Sandbox Code Playgroud)