隱式轉換下面的代碼不會編譯:Scala中從Array [T]至IndexedSeq [T]
implicit class indexedSeqWithBinarySearch[T](xs: IndexedSeq[T]) {
def binarySearch(a: T) = ???
}
Array(0, 1, 2).binarySearch(1)
方法binarySearch
不被添加到Array類。但是我猜想有一個來自Array[T] -> WrappedArray[T] -> mutable.IndexedSeq[T] -> collection.IndexedSeq[T]
的隱式轉換鏈?如何製作Array
和IndexedSeq
?
一種選擇是從你的特定集合類型定義轉換使用;這樣你也不依賴繼承(即子類型多態)。 – 2014-11-02 20:40:51
是的,但爲什麼'Array's不能轉換爲'IndexedSeq's? – 2014-11-02 20:44:05
它可以,但是在呼叫簽名中的'x:X''意味着'x'必須是'X'的實際子類型的一個實例,不能轉換爲'X';看到我的答案爲解決方案。 – 2014-11-02 22:25:02