我明白如何在簡單的整數列表上使用reduceLeft,但是如果在case類對象失敗時嘗試使用reduceLeft。如何使用Scala reduceLeft對案例類?
假設我有:
case class LogMsg(time:Int, cat:String, msg:String)
val cList = List(LogMsg(1,"a", "bla"), LogMsg(2,"a", "bla"), LogMsg(4,"b", "bla"))
,我想找到LogMsgs之間的時間差異最大。 我想要做的事,如:
cList.reduceLeft((a,b) => (b.time - a.time)
這當然是行不通的。
reduceLeft的第一次迭代比較了前兩個元素,它們都是LogMsg類型。之後,它將下一個元素(LogMsg)與第一次迭代(Int)的結果進行比較。
我只是有語法錯誤或者我應該以另一種方式做這個?
你 「 - 」應該返回一個LogMsg,而不是一個整數。覆蓋對象中的「 - 」運算符,而不是在時間對象上執行。 – 2012-02-01 17:04:33