其他分享
首页 > 其他分享> > Scala 隐式转换报错:not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U].

Scala 隐式转换报错:not enough arguments for method sorted: (implicit ord: scala.math.Ordering[U])List[U].

作者:互联网

原代码如下:

    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] 转换,所以不需要额外声明,但是对于泛型不确定性,需要在函数中声明

 

标签:Ordering,List,value,dataset,报错,sorted,ord,implicit
来源: https://www.cnblogs.com/m2492565210/p/16125373.html