我明白如何在简单的整数列表上使用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