Scala 隱式轉換報錯:not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U]. Unspecified value parameter ord.
阿新 • • 發佈:2022-04-10
原始碼如下:
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] 轉換,所以不需要額外宣告,但是對於泛型不確定性,需要在函式中宣告