我理解如何在简单的整数列表上使用reduceLeft,但尝试在case类对象失败时使用if.
假设我有:
case class LogMsg(time:Int,cat:String,msg:String) val cList = List(LogMsg(1,"a","bla"),LogMsg(2,LogMsg(4,"b","bla"))
我想找到LogMsgs之间最大的时间差异.
我想做的事情如下:
cList.reduceLeft((a,b) => (b.time - a.time)
这当然不起作用.
reduceLeft的第一次迭代比较前两个元素,它们都是LogMsg类型.之后,它将下一个元素(LogMsg)与第一次迭代(Int)的结果进行比较.
我只是语法错误或者我应该采取另一种方式吗?
解决方法
我可能会这样做:
(cList,cList.tail).zipped.map((a,b) => b.time - a.time).max
您需要事先检查cList是否至少有2个元素.
reduceLeft不能用于返回最大的差异,因为它总是返回你正在减少的List的类型,即在这种情况下是LogMsg,并且你要求Int.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。