Scala 错误:发现类型不匹配:(Int,Int) => 需要 int:排序[Int]



在scala中运行以下代码时,错误类型不匹配

private def currentOrd: Ordering[Int] = 
    if (isAscending) (x: Int, y: Int) => x+y
    else (x: Int, y: Int) => y - x

正如错误所说的:您的代码说它应该返回Ordering[Int],但它返回一个函数。在 Scala 2.12 中,函数文字可以自动转换为像 Ordering 这样的单抽象方法特征(您的代码将编译),但在 2.11 或更早版本中则不能。

除此之外,(x: Int, y: Int) => x+y不太可能是正确的;如果你的意思是(x: Int, y: Int) => x - y那么更好的编写方法(在以前的版本中也有效)是

if (isAscending) Ordering.Int else Ordering.Int.reverse

最新更新