Java Kotlin解构when/if语句

Java Kotlin解构when/if语句,java,string,kotlin,Java,String,Kotlin,所以我有一个字符串,我想检查我是否应该一分为二,或者返回一些默认值。像这样: val myString = "firstPart-secondPart" val (first, second) = when (myString.contains("-")) { true -> myString.split('-', limit = 2) else -> ?? <-- How would i return ("Default1", "Default

所以我有一个字符串,我想检查我是否应该一分为二,或者返回一些默认值。像这样:

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?
}
val myString=“第一部分第二部分”
val(first,second)=当(myString.contains(“-”)时{
true->myString.split('-',limit=2)
else->?如何返回2个值进行分解
您需要返回一个与上述类型匹配的类型,split返回一个列表,因此您可以使用:

listOf("Default1", "Default2")
完整代码 为什么会这样 由于两个分支都返回
List
,因此可以将整个when块视为
List
,因此可以对其进行分解以从中获取值

可能的清理
假设您要添加更多条件,这可能更有意义,否则if可能更有意义。

作为的正确答案的替代方法,您可以使用destructured:

注1:在。
注2:此处用于创建

val myString = "firstPart-secondPart"
val (first, second) = when (myString.contains("-")) {
        true -> myString.split('-', limit = 2)
        else -> listOf("Default1", "Default2")
}
val myString = "firstPart-secondPart"
val (first, second) = when {
    myString.contains("-") -> myString.split('-', limit = 2)
    else -> listOf("Default1", "Default2")
}   
val (first, second) = when (myString.contains("-")) {
    true -> myString.split('-', limit = 2).let { it[0] to it[1] }
    else -> "Default1" to "Default2"
}