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"
}