Scala SortWith和自定义比较器函数 sortKey匹配{ case SortKeys.ActualUnits=>{ 响应者索特维思{ (u.aggregations.actualnits.get,u.aggregations.actualnits.get)=> 比较(u.aggregations.ActualUnits.get, _.aggregations.ActualUnits.get, (对) } } } def比较(a:BigDecimal,b:BigDecimal,sortOrder:Boolean)={ 排序器匹配{ 大小写正确=>ab>a } }
聚合是一个案例类 尝试使用自定义比较器函数来避免为每个sortKey定义两个语句 编译器抛出Scala SortWith和自定义比较器函数 sortKey匹配{ case SortKeys.ActualUnits=>{ 响应者索特维思{ (u.aggregations.actualnits.get,u.aggregations.actualnits.get)=> 比较(u.aggregations.ActualUnits.get, _.aggregations.ActualUnits.get, (对) } } } def比较(a:BigDecimal,b:BigDecimal,sortOrder:Boolean)={ 排序器匹配{ 大小写正确=>ab>a } },scala,Scala,聚合是一个案例类 尝试使用自定义比较器函数来避免为每个sortKey定义两个语句 编译器抛出错误:不是合法的形式参数 sortKey match { case SortKeys.ActualUnits => { ResponseList.sortWith { (_.aggregations.ActualUnits.get, _.aggregations.ActualUnits.get) => compare(_.
错误:不是合法的形式参数
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
}
}
不太确定您在这里要做什么,但正如错误明确指出的那样,\uu.aggregations.ActualUnits.get
不是合法的正式参数。我想你是说
(_.aggregations.ActualUnits.get, _.aggregations.ActualUnits.get) =>
compare(_.aggregations.ActualUnits.get,
_.aggregations.ActualUnits.get,
true)
您还必须用您的SortKeys代码更新您的问题,以便其他人可以帮助您。我想您在eta扩展方面有错误。似乎您尝试访问一个占位符两次。是的,您是对的。我几分钟前就知道了。谢谢你的帮助。
(x, y) =>
compare(x.aggregations.ActualUnits.get,
y.aggregations.ActualUnits.get,
true)