我的项目中有以下代码:
val typeface = if (isBold && isItalic) {
Typeface.BOLD_ITALIC
} else if (isBold) {
Typeface.BOLD
} else if (isItalic) {
Typeface.ITALIC
} else {
Typeface.NORMAL
}
updateTypeface(typeface)
然后,我决定将我的代码更改为:
if (isBold && isItalic) {
Typeface.BOLD_ITALIC
} else if (isBold) {
Typeface.BOLD
} else if (isItalic) {
Typeface.ITALIC
} else {
Typeface.NORMAL
}.also { typeface ->
updateTypeface(typeface)
}
isBold is true
但是,当和isItalic is false
的值updateTypeface(typeface)
没有被调用时,尽管断点停止在行中Typeface.BOLD
。
我错过了什么,还是这里有错误?
当前 kotlin 插件版本: 223-1.9.0-release-358-AS8836.35.2231.10811636
分析器版本: 1.9.0-release-358
Android Studio:长颈鹿 | 2022.3.1 补丁 2
运行时版本: 17.0.6+0-b2043.56-10027231 amd64
VM: JetBrains sro 的 OpenJDK 64 位服务器 VM
尝试使用这样的when结构:
该
.also { }
块仅应用于最后一个 if else 语句。如果你看这个例子:它将打印出:
你可以在这里测试一下
为了解决这个问题,您可以将所有 if else 语句括在括号中。
或者使用不带参数的when 语句。
在你的情况下,它看起来像这样: