在 Kotlin 中,是否有更“Kotlin”的方式来执行以下操作?

fun parse(inputSample: Sample): List<String> =
   when {
     inputSample.foo != null -> parse(inputSample.foo)
     inputSample.bar != null -> parse(inputSample.bar)
     else -> emptyList()
  }

我怀疑使用 null 检查 when 可以在 Kotlin 中以不同的方式编写

最佳答案

您可以使用范围功能来减少“冗余”代码:

fun parse(inputSample: Sample): List<String> = inputSample.run {
    when {
        foo != null -> parse(foo)
        bar != null -> parse(bar)
        else -> emptyList()
    }
}

或者结合 elvis 运算符(注意这里假设 foobar 是相同类型的):
fun parse(inputSample : Sample) : List<String> = inputSample.run {
    (foo ?: bar)?.let { parse(it) } ?: emptyList()
}

关于kotlin - 我可以将检查空值的时间更改为不同的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58331835/

10-10 20:08