1
我正在編寫一個參數化合並排序功能,並將較少的檢查程序作爲函數傳遞。 但是,編譯器正在拋出以下錯誤。在scala中傳遞參數化函數
type mismatch;
found : y.type (with underlying type T)
required: T
這裏是我完整的代碼
def mergeSort[T] (list:List[T], pred:(T,T) =>Boolean):List[T]={
def merge[T](left:List[T], right:List[T], acc:List[T]):List[T] = (left,right) match{
case (Nil,_) => acC++ right
case (_,Nil) => acC++ left
case (x::xs, y::ys) => if(pred(y,x)) merge(left,ys,acc :+ y) else merge(xs,right,acc :+ x)
}
val m = list.length/2
if (m == 0) list
else {
val (l,r) = list splitAt m
merge(mergeSort(l,pred), mergeSort(r,pred), List())
}
}
的問題是線
if(pred(y,x))
一切似乎在邏輯上是正確的,想不通爲什麼會這樣? 幫助表示讚賞。
只是將'merge [T](''merge'('。 – senia