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