在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