2
我一直在努力寻找一种方法来处理以下情况,我希望找到一个统一类型参数的公共视图(或超类),以便可以访问类型类相比较苹果和苹果:在类中统一视图边界
case class Foo[A](i:A) {
def cmp[B:Ordering, C <% B](b:B)(implicit ev: A => B) = implicitly[Ordering[B]].lt(i,b)
}
// Foo(1).cmp(2.0) works
// Foo(1.0).cmp(2) complains about evidence of Double => Int
现在,这可以平凡与简单的函数来完成:
def cmp[A:Ordering](a1:A, a2:A) = implicitly[Ordering[A]].lt(a1,a2)
// cmp(Foo(1).a, 1.0)
// cmp(Foo(1.0).a, 1)
不过,我希望它作为生活的富的方法。关于我能做些什么来强迫它使用视图边界的想法?
这是一个非常合理的工作解决我的问题。想知道为什么编译器会遇到这种问题?尝试处理数字和常规类时,这很不幸很常见。 – Refefer