gpt4 book ai didi

scala - 如何在案例类上使用 Scala reduceLeft?

转载 作者:行者123 更新时间:2023-12-01 07:20:21 31 4
gpt4 key购买 nike

我了解如何在简单的整数列表上使用 reduceLeft,但尝试在 case 类对象失败时使用。

假设我有:

  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) 进行比较。

我只是语法错误还是应该以另一种方式这样做?

最佳答案

我可能会做这样的事情:

(cList, cList.tail).zipped.map((a, b) => b.time - a.time).max

您需要事先检查 cList至少有 2 个元素。
reduceLeft不能用于返回最大的差异,因为它总是返回你正在减少的 List 的类型,即 LogMsg在这种情况下,您要求的是 Int .

关于scala - 如何在案例类上使用 Scala reduceLeft?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9099730/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com