ant*_*584 3 android syntactic-sugar kotlin
我正在尝试使用 kotlin 的所有功能,但似乎它们都不起作用,或者可能是我的错。
所以,apply不String工作。例子:
val str = someStr.apply {
toUpperCase()
if (contains("W")) replace("W", "w")
}
Run Code Online (Sandbox Code Playgroud)
输入 -> xywz
输出 -> xywz
预期 -> XYwZ
Java风格:
val str = it.text().toString().toUpperCase()
if (str.contains("W")) str.replace("W", "w")
Run Code Online (Sandbox Code Playgroud)
输入 -> xywz
输出 -> XYwZ
预期 -> XYwZ
难道我做错了什么?
实际上apply并没有返回你计算的值。您可能更想使用:run、let或with。此外,可能更重要的是您没有指定路径else。这可能会返回 aUnit而不是值,因此您可能需要指定应该返回的内容。最后,这些方法中的调用不是链接的。首先调用toUpperCase不会改变任何东西......这几乎是死代码......所以你可能想写一些类似的东西:
val str = with(someStr) {
toUpperCase().run {
if (contains("W")) replace("W", "w")
else this
}
}
Run Code Online (Sandbox Code Playgroud)
不过,我只是使用 run/let/with 来演示其用法,因为您已经使用了 apply...您显示的 Java 方式在这方面当然更容易,最简单的可能解决方案是 TheOperator 通过省略您的条件来显示的解决方案首先,因为replace默认情况下区分大小写。
| 归档时间: |
|
| 查看次数: |
3168 次 |
| 最近记录: |