Kotlin if语句即使执行错误也是如此
我试图检查一个配置文件是否有一个图像的URL设置,如果是的话,加载到一个ImageView
:
val hasImage = image != null && image.isNotBlank() if (hasImage) { Picasso.with(context).load(image).into(row.image) }
image
是可以空的字符串。 问题是,即使hasImage
是false,它仍然加载图像,你可以看到:
但是,如果我做val hasImage = false
它的行为如预期。
对于这里发生的事情,我感到非常困惑。 为什么if
条件仍在执行?
可能是编译问题。 截图显示了一个不可能的场景。 你在哪里开始应用程序? 尝试重建,然后再次调试。 也尝试添加一些日志。
这不是由于您选择检查布尔表达式的方式…
如果图像是一个空字符串(“”),则布尔值将被评估为true,并执行if分支。 为了清楚起见,请相应地更改您的条件和/或使用此标准库函数:
isNullOrBlank()
( https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-blank.html )
喜欢这个:
if (!image.isNullOrBlank()) { Picasso.with(context).load(image).into(row.image) }