以下代码在库中(我无法编辑它)。
trait ATraitInALibraryICantEdit[T] {
def save(data: T): Future[T]
// ....
}
然后,在我的代码中,我有:
class MyClass[T] extends ATraitInALibraryICantEdit[T] {
override def save(data: T): Future[T] = {
// ...
}
}
这是简单的继承。但是,就我而言,我想将方法的签名更改为(管理异常):
// Type change : Future[T] --> Future[Either[String, T]]
override def save(data: T): Future[Either[String, T]] = {
// ...
}
总之,我的问题是如何更改方法的返回类型,以使其适应我的错误管理方式。
我想,我应该使用一种模式(而不是直接继承),但我不认识巫婆。如果没有更新库,我甚至不会知道。
解决方案是使用异常,我宁愿更喜欢使用monads。