所以我有一个字符串,我想检查是否应该一分为二,或者返回一些默认值。像这样:
val myString = "firstPart-secondPart"
val (first, second) = when (myString.contains("-")) {
true -> myString.split('-', limit = 2)
else -> ?? <-- How would i return ("Default1", "Default2") so the destructuring still works?
}
所以我的问题是,我如何返回两个默认字符串,以便解构工作?我以前用过 String.split()
来解构,真的很好。
最佳答案
如何返回2个值进行解构
你需要返回一个与上述类型匹配的类型,split返回一个列表,所以你可以这样使用:
listOf("Default1", "Default2")
完整代码
val myString = "firstPart-secondPart"
val (first, second) = when (myString.contains("-")) {
true -> myString.split('-', limit = 2)
else -> listOf("Default1", "Default2")
}
为什么会这样
由于两个分支都返回 List<String>
您可以将整个 when block 视为 List<String>
,因此可以对其进行解构以从中获取值。
可能的清理
val myString = "firstPart-secondPart"
val (first, second) = when {
myString.contains("-") -> myString.split('-', limit = 2)
else -> listOf("Default1", "Default2")
}
这可能更有意义,假设您要添加更多条件,否则 if 可能更有意义。
关于java - Kotlin 解构 when/if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49256722/