如何遍历案例类列表,仅输出单个案例类,选择唯一符合条件的行。
例如,对于案例类abc的列表,我想捕获满足某些条件的行。
case class abc(id: int, mod: Int, a: Int, b: Int)
case class output(id: int, mod: Int, calc: Int)
val a = List( abc(1, 101, 56, 47),
abc(1, 201, 34, 23))
val out1: Option[Output] = Some(output(1, 101, 103))
val b = List( abc(1, 101, 56, 47)
abc(1, 202, 47, 56))
val out2: Option[Output] = Some(output(1, 202, 103))
答案 0 :(得分:2)
通常,您可以通过以下方法完成自己想做的事情:
list.foldLeft(None: Option[output]) {
case (Some(oldMax), a) =>
val newMax = ... // calculate output
Some(if (check if new output is bigger) newMax else oldMax)
case (None, a)
Some(calculate first max)
}
我不会实现输出的比较和计算,不会完全破坏乐趣。