2017-06-14 285 views
0
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 
    } 
} 

聚合是一个caseclass。SortWith和自定义比较功能

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

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

+0

你将不得不用你的SortKeys代码更新你的问题,以便其他人可以帮助你做到这一点。 –

+0

我想你有eta扩展的错误。看起来你尝试访问一个占位符两次。 – Zernike

回答

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

不能确定你想在这里做什么,而是_.aggregations.ActualUnits.get,作为错误明确说,是不是一个合法正规的paramater。我想你的意思是

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

是的,你是对的。我几分钟前就明白了这一点。感谢您的帮助。 –