我试图在scala中实现通用的二进制搜索算法。那就是:泛型不是很通用!
type Ord ={
def <(x:Any):Boolean
def >(x:Any):Boolean
}
def binSearch[T <: Ord ](x:T,start:Int,end:Int,t:Array[T]):Boolean = {
if (start > end) return false
val pos = (start + end)/2
if(t(pos)==x) true
else if (t(pos) < x) binSearch(x,pos+1,end,t)
else binSearch(x,start,pos-1,t)
}
一切正常,直到我试图实际使用它(XD):
binSearch(3,0,4,Array(1,2,5,6))
编译器假装int是不是奥德的一员,但我知道类Int有<
和>
方法。 那么我该怎么做才能解决这个奇怪的问题? 谢谢
我没有看到奥德是int类型看你的代码。 – 2010-05-16 12:00:24