假设我们有以下内容:
sealed trait Foo
case class FullFoo[A](foo: A) extends Foo
case object EmptyFoo extends Foo和
def liftToFoo[A](opt: Option[A]): Foo =
opt.map(a => FullFoo(a)).getOrElse(EmptyFoo)我们可以很容易地做到:
liftToFoo(Some(123)) // FullFoo(123)
liftToFoo(None) // EmptyFoo但我很好奇是否有一些“可链接”的方式来调用它(而不是像上面那样包装方法):
Some(123).someFunction(liftToFoo) // FullFoo(123)发布于 2018-11-11 09:33:12
这并不完全是你想要的,但可能比你已经得到的要近一点。
Some(123).fold(EmptyFoo:Foo)(FullFoo(_))https://stackoverflow.com/questions/53244784
复制相似问题