Итак, у меня есть парсеры, и я хочу использовать первое, которое возвращает ненулевое значение. Как бы я сделал это наиболее элегантно?
return parsers.map { it.parse(content) }.firstOrNull { it != null }
отобразит все (миллион?) Парсеры перед выбором первого.
return parsers.firstOrNull { it.parse(content) != null }?.parse(content)
снова запустит (дорогой?) parse()
.
Я знаю, что могу
for (parser in parsers) {
val result = parser.parse(content)
if (result != null) {
return result
}
}
return null
parsers.forEach { it.parse(content)?.run { return this } }
return null
- самое короткое, что я могу получить, но читать не очень приятно.
Я почти уверен, что здесь есть ярлык, которого я не вижу.