2017-06-14 48 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

是的,你是對的。我幾分鐘前就明白了這一點。感謝您的幫助。 –