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