Выполните итерацию по списку классов дел и просто выводите один класс дел - PullRequest
0 голосов
/ 21 апреля 2020

Как я могу перебрать список классов дел и просто вывести один класс дел, выбрав единственную строку, соответствующую критерию.

Например, для списка класса дел ab c Я хочу захватить строку, которая соответствует определенным критериям.

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))

1 Ответ

2 голосов
/ 21 апреля 2020

В общем, вы можете делать то, что хотите или добиться с помощью:

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)
}

Я не буду реализовывать сравнение и расчет выходных данных, чтобы полностью не испортить удовольствие.

...