SortWith和自定义比较器功能

时间:2017-06-14 00:27:33

标签: scala

sortKey match {
    case SortKeys.ActualUnits => {
        ResponseList.sortWith {
            (_.aggregations.ActualUnits.get, _.aggregations.ActualUnits.get) =>
            compare(_.aggregations.ActualUnits.get,
                _.aggregations.ActualUnits.get,
                true)
        }
    }
}


def compare(a: BigDecimal, b: BigDecimal, sortOrder: Boolean) = {
    sortOrder match {
        case true => a < b
        case false => b > a
    }
}

聚合是一个案例类。

尝试使用自定义比较器函数来避免为每个sortKey定义两个语句。

编译器抛出error: not a legal formal parameter

1 个答案:

答案 0 :(得分:1)

 (_.aggregations.ActualUnits.get, _.aggregations.ActualUnits.get) =>
            compare(_.aggregations.ActualUnits.get,
                _.aggregations.ActualUnits.get,
                true)

不确定你在这里尝试做什么,但_.aggregations.ActualUnits.get,正如错误明确指出的那样,不是一个合法的正式参数。我想你的意思是

 (x, y) =>
            compare(x.aggregations.ActualUnits.get,
                y.aggregations.ActualUnits.get,
                true)