Android 我可以在Kotlin中将两个条件合并为一行吗?

Android 我可以在Kotlin中将两个条件合并为一行吗?,android,kotlin,Android,Kotlin,代码A很好,我希望对其进行优化,因此我编写了代码B 我不确定代码B是否总是正确的 如果Kotlin先选中剪贴板.hasPrimaryClip(),然后选中剪贴板.primaryClipDescription.hasMimeType(MIMETYPE\u TEXT\u PLAIN)下一步,就可以了 如果Kotlin先检查剪贴板.primaryclipddescription.hasMimeType(MIMETYPE\u TEXT\u PLAIN)然后再检查剪贴板.hasmiryclip(),它可能

代码A很好,我希望对其进行优化,因此我编写了代码B

我不确定代码B是否总是正确的

如果Kotlin先选中剪贴板.hasPrimaryClip(),然后选中剪贴板.primaryClipDescription.hasMimeType(MIMETYPE\u TEXT\u PLAIN)下一步,就可以了

如果Kotlin先检查剪贴板.primaryclipddescription.hasMimeType(MIMETYPE\u TEXT\u PLAIN)然后再检查剪贴板.hasmiryclip(),它可能会崩溃,对吗

代码A

clipboard.addPrimaryClipChangedListener {
   if (clipboard.hasPrimaryClip() ) {
          if (clipboard.primaryClipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN)) {

         }
   }
}
代码B

clipboard.addPrimaryClipChangedListener {
  if (clipboard.hasPrimaryClip() && clipboard.primaryClipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN) ) {

  }
}

如果
条件按顺序运行。这意味着它将首先检查左侧条件,如果运算符为and且左侧条件返回false,则不会检查右侧条件。因此,是的,您可以合并两种情况。

如评论中所述,其背后的原理被描述为“短路”:

短路求值[…]是某些编程语言中某些布尔运算符的语义,其中仅当第一个参数不足以确定表达式的值时才执行或求值第二个参数

这意味着将始终对剪贴板进行计算。如果是
false

,条件失败,无需进一步查看。如果它是
true
但是,
clipboard.primaryclipddescription.hasMimeType(MIMETYPE\u TEXT\u PLAIN)
也将被计算。

如果你想搜索它,术语是“短路”