1. 程式人生 > 其它 >Scala 隱式轉換報錯:not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U]. Unspecified value parameter ord.

Scala 隱式轉換報錯:not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U]. Unspecified value parameter ord.

原始碼如下:

    def bubbleSortStrategy[U](dataset: List[U]) : List[U] ={
        println("sort in bubble")
        dataset.sorted
    }

啟動時,完整報錯資訊:

Error:(8, 17) No implicit Ordering defined for U.
        dataset.sorted
Error:(8, 17) not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U].
Unspecified value parameter ord.
        dataset.sorted
Error:(
13, 17) No implicit Ordering defined for U. dataset.sorted Error:(13, 17) not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U]. Unspecified value parameter ord. dataset.sorted

程式碼需要新增隱式引數:

    def bubbleSortStrategy[U](dataset: List[U]) (implicit ord: Ordering[U]): List[U] ={
        println(
"sort in bubble") dataset.sorted }

當直接呼叫dataset.sorted時,如dataset型別為List[Int],這裡明確存在 Int -> Ordering[Int] 轉換,所以不需要額外宣告,但是對於泛型不確定性,需要在函式中宣告