Сведение синтаксиса с выходом - улучшение читабельности кода
Я пытаюсь улучшить читаемость своего кода, и мне трудно с этим маленьким куском.
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
}