我正在尝试在Scala中以通用方式包装java.util.Array.binarySearch
,但是以下代码不起作用:
def binarySlice[T](minValue: T, array: Array[T]): Array[T] = {
val i = java.util.Arrays.binarySearch(array, minValue)
val idx = if (i > 0) i else -i - 1
array.slice(idx, array.length)
}
错误是:Cannot resolve overloaded method 'binarySearch'
。我应该怎么做才能使此代码起作用?
答案 0 :(得分:1)
请参阅:Scala replacement for Arrays.binarySearch:
def binarySlice[T <: AnyRef](minValue: T, array: Array[T]): Array[T] = {
val i = java.util.Arrays.binarySearch(array.asInstanceOf[Array[AnyRef]], minValue)
val idx = if (i > 0) i else -i - 1
array.slice(idx, array.length)
}
不能将其用于基元。这是int的解决方法:
scala> binarySlice[java.lang.Integer](3, Array(0,3,7,8))
res6: Array[Integer] = Array(3, 7, 8)