我有以下特点,其中:选择模式使用
sealed trait Sum[+A, +B] {
def fold[C](error: A => C, success: B => C): C =
this match {
case Failure(v) => error(v)
case Success(v) => success(v)
}
}
final case class Failure[A](value: A) extends Sum[A, Nothing]
final case class Success[B](value: B) extends Sum[Nothing, B]
正如你可以看到,有一个fold
方法实现。
我可以在fold
方法移到一个同伴对象如下:
sealed trait Sum[+A, +B]
final case class Failure[A](value: A) extends Sum[A, Nothing]
final case class Success[B](value: B) extends Sum[Nothing, B]
object Sum{
def fold[A, B, C](s: Sum[A,B], error: A => C, success: B => C): C =
s match {
case Failure(v) => error(v)
case Success(v) => success(v)
}
}
什么是更方便的模式,在第一或第二例子,其中的情况呢?
对不起,这是我的错,我纠正了代码。 –
您仍然在折叠方法中使用它,它始终是Sum伴随对象 – Harald
IT现在应该没问题。 –