假设我们有以下内容:
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)
答案 0 :(得分:2)
并不是您要找的东西,而是可能比您想要的东西更近。
Some(123).fold(EmptyFoo:Foo)(FullFoo(_))