为什么要使用If而不是When?

时间:2020-07-09 02:10:59

标签: kotlin coding-style conventions coding-efficiency

我正在阅读kotlinlang中的Kotlin编码约定,并且发现该网站建议人们对二进制选项使用$basename = basename($link, '.php'); 语句,对超过两个选项的任何内容使用if语句。这有什么押韵或原因吗?我无法想象,如果有的话,指出这一点将是一个足够重要的优化。此外,when语句更易于格式化,以提高IMO的可读性。如果有人想破解它,这里是链接。

Coding Conventions from kotlinlang

2 个答案:

答案 0 :(得分:0)

是的,完全正确,

if语句用于二进制选项,而when语句用于具有两个以上选项的任何东西

这是例子

if示例:

val isSeen = false
if (isSeen) {
   Toast.makeText(this, "isSeen is True", Toast.LENGTH_SHORT).show()
} else {
   Toast.makeText(this, "isSeen is False", Toast.LENGTH_SHORT).show()
}

when示例:

val isSeen = false
when (isSeen) {
   true -> Toast.makeText(this, "isSeen is True", Toast.LENGTH_SHORT).show()
   false -> Toast.makeText(this, "isSeen is False", Toast.LENGTH_SHORT).show()
}

如您所见,isSeen显然只有2个值,即truefalse,因此建议您使用if语句

但是当您有两种以上的可能性时,如下所示

if示例:

val name = "Franz"
if (name == "Franz") {
   Toast.makeText(this, "Name is Franz", Toast.LENGTH_SHORT).show()
} else if (name == "Marlon") {
   Toast.makeText(this, "Name is Marlon", Toast.LENGTH_SHORT).show()
} else {
   Toast.makeText(this, "Not Franz or Marlon", Toast.LENGTH_SHORT).show()
}

when示例:

val name = "Franz"
when (name) {
   "Franz" -> Toast.makeText(this, "Name is Franz", Toast.LENGTH_SHORT).show()
   "Marlon" -> Toast.makeText(this, "Name is Marlon", Toast.LENGTH_SHORT).show()
   else -> Toast.makeText(this, "Not Franz or Marlon", Toast.LENGTH_SHORT).show()
}

建议您使用when语句。

希望这可以解决所有问题:)

答案 1 :(得分:0)

如评论所述,易于编写且易于辨认,我这样做是为了标记我的查询答案。

相关问题