假设我们有以下几点:
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)