在scala中运行以下代码时,抛出了错误类型不匹配
private def currentOrd: Ordering[Int] =
if (isAscending) (x: Int, y: Int) => x+y
else (x: Int, y: Int) => y - x
答案 0 :(得分:0)
该错误说明了什么:您的代码说应该返回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