【发布时间】:2020-08-03 12:34:42
【问题描述】:
如何遍历案例类列表并仅输出单个案例类,选择唯一符合条件的行。
例如,对于一个案例类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))
【问题讨论】:
-
你试过什么? - 另外,你想如何模拟“没有返回”?与
null? (这被认为是一种不好的做法),带有Option? - PS:让我推荐你看看scaladoc,如果你检查了所有stdlib为你做的事情,我很确定你可以想出一个简单的解决方案;例如,我可以想到一个解决方案,只涉及对列表的一个方法调用,然后是一个简单的if。 -
返回Option[Output]也是可以的
-
所以你想计算最大值然后
.find(yourformula == max)。 -
或者,如果你只想有一个段落,foldLeft 保存当前最大值并在你找到更好的地方替换它。
-
如何用一个简单的 if 比较不同的行