如何在案例类中使用Scala reduceLeft?
发布时间:2020-12-16 10:07:37 所属栏目:安全 来源:网络整理
导读:我理解如何在简单的整数列表上使用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之间最大的时间差异.
我理解如何在简单的整数列表上使用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) 这当然不起作用. 我只是语法错误或者我应该采取另一种方式吗? 解决方法
我可能会这样做:
(cList,cList.tail).zipped.map((a,b) => b.time - a.time).max 您需要事先检查cList是否至少有2个元素. reduceLeft不能用于返回最大的差异,因为它总是返回你正在减少的List的类型,即在这种情况下是LogMsg,并且你要求Int. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |