【发布时间】:2014-11-04 02:19:31
【问题描述】:
以下代码无法编译:
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?
【问题讨论】:
-
一种选择是从您正在使用的特定集合类型定义转换;这样你也不依赖继承(即子类型多态性)。
-
是的,但是为什么不能将
Arrays 转换为IndexedSeqs? -
可以,但调用签名中的
x: X意味着x必须是X的实际子类型的实例,而不仅仅是可转换为X;请参阅我的答案以获得解决方案。
标签: arrays scala implicit-conversion