我有以下特點,其中:選擇模式使用
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現在應該沒問題。 –