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

时间:2018-12-27 11:35:41

标签: scala

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

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

1 个答案:

答案 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