【发布时间】:2020-07-18 11:49:54
【问题描述】:
如果我可以创建具有类似想法的方法,我很感兴趣:
def myMethod[T](param: T)(implicit oneOf: Either[TypeClass1[T], TypeClass2[T]]) = oneOf match ...
我尝试使用默认参数(我在 akka 中看到过类似的东西):
def myMethod[T](param: T)(implicit t1: TypeClass1[T] = null, t2: TypeClass2[T] = null) =
if (t1 == null) ...
但是,这样我不能强制 scala 编译器至少找到其中一个。
另外,我已经实现了从 TypeClass1[T] 到 Left[TypeClass1[T], TypeClass2[T]] 以及从 TC2 到 Right 的隐式转换,但是 Scala 编译器会忽略这种转换。
有没有办法做这样的事情?
【问题讨论】:
-
如果有两个重载方法呢?但是,我想这可能会导致歧义,因此您可能还需要混合隐式优先级。