java - Kotlin 解构 when/if 语句

标签 java string kotlin

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

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/

相关文章:

java - 为什么这只会生成一个随机字符串? [Java]

java - 如何创建具有多个 View 的 ListView

java - 在 Java 中显示一张笑脸

c# - 为什么字符串相加结果如此奇怪?

ruby - 用多个定界符拆分字符串

kotlin - 在 Kotlin 中获取可变参数的类型不匹配

java - 为什么当我使用变量时我的 vector 的大小更准确?

java - 将 double 值与两个短路相除的结果相乘

android - 错误 : Inflating class com. google.android.material.textfield.TextInputLayout

markdown - kotlin文件不支持markdown编写的流程图?