您给出的示例并不模棱两可;它只能有一个合理的含义。它与您链接到的问题(根本不涉及else
子句)完全不同。所以我不确定您在问什么。
Kotlin 在解释if
(和else
)方面与大多数类 C 语言相似。所以严格来说,这种类型的错误仍然是可能的。但是 Kotlin 有两个特性可以降低此类问题的风险。
首先是,不像C和Java等类似语言,if
可以用作表达式(返回值)。以这种方式使用时,编译器确保每个分支都返回一个值;如果围绕多个分支存在任何混淆,这通常会导致编译器错误。
其次是when
结构,它的功能类似于 C/Javaswitch
语句,但避免了失败,因此需要break
s;它也可以用作表达式,强制执行单个路径和单个返回值。
所以在 Kotlin 中,链接的代码最好用 a 编写when
,这样会更简单,也可以防止这种类型的错误。
最终,我认为它没有可比性。链接代码是低级 C,与一般应用程序代码有很大不同的做法和限制。特别是,使用goto
for 错误清理本质上是容易出错的。如果他们else
正确地使用了分支,它会使代码更加清晰,并防止出现这个错误。
如果你有足够的决心,任何语言都可能写出糟糕的代码!一种好的语言是一种使编写好代码更容易,而编写坏代码更难的语言。(而且我认为 Kotlin 在这方面的得分相当不错。)