Сведение синтаксиса с выходом - улучшение читабельности кода

Я пытаюсь улучшить читаемость своего кода, и мне трудно с этим маленьким куском.

Foo это метод, который принимает список [Ping]

Thing.generate возвращает список [Ping]

ListOfPings - это список [Ping]

hasQuality возвращает логическое значение при оценке Ping

Вот код:

foo((for {
          pinger <- listOfPings
        } yield pinger.generate.filter(_.hasQuality)).flatten)

Каждый Ping в listOfPingss создает List [Thing] с помощью метода generate, что означает результат yield в конце цикла - List [List [Ping]].

Я сглаживаю этот List [List [Ping]] (не отдельные списки) и помещаю весь результат в foo

У меня проблемы с тем, чтобы это выглядело лучше, возможно, с плоской картой? Я искренне ценю помощь.

1 ответ

Решение

Что-то вроде:

foo {
  for (p <- listOfPings ; q <- p.generate if q.hasQuality) yield q
}
Другие вопросы по тегам