Вы можете использовать функцию определения объема, чтобы уменьшить «избыточный» код:
fun parse(inputSample: Sample): List<String> = inputSample.run {
when {
foo != null -> parse(foo)
bar != null -> parse(bar)
else -> emptyList()
}
}
Или объединить с оператором elvis (обратите внимание, что предполагается, что foo
и bar
относятся к одному и тому же типу):
fun parse(inputSample : Sample) : List<String> = inputSample.run {
(foo ?: bar)?.let { parse(it) } ?: emptyList()
}