<分区>
我只是想从有经验的 IOS 开发人员那里了解使用“yoda 条件”的优点和缺点是什么。因为我正在学习快速语言。我对这个话题了解不多。我没有找到任何合适的答案。任何帮助将不胜感激。谢谢。
<分区>
我只是想从有经验的 IOS 开发人员那里了解使用“yoda 条件”的优点和缺点是什么。因为我正在学习快速语言。我对这个话题了解不多。我没有找到任何合适的答案。任何帮助将不胜感激。谢谢。
最佳答案
C、C++、Objective-C 和 Java(以及其他一些语言)具有三个以容易出错的方式协同工作的属性:
赋值是一个表达式。也就是说,x = 1
是一个带有值(本例中的值 1)的表达式。
控制流语句(如 if
和 while
语句)中的条件允许任何可以强制转换为 bool 值的表达式。整数、 float 和指针都可以强制转换为 bool 值:零或 null 表示假,其他任何表示真。
赋值运算符=
和相等运算符==
非常相似。
因为这三个特点,当你想写if (x == 1)
时,很容易不小心写了if (x = 1)
。您的程序仍然可以编译,但有时可能会出现错误。
“Yoda 条件”是一种有助于防止此错误的样式。如果你习惯写 if (1 == x)
,而你不小心写了 if (1 = x)
,你的程序将无法编译。
但是,if (x = 1)
错误不会在 Swift 中发生,因为 Swift 缺少上述三个属性中的两个。
在 Swift 中,像 x = 1
这样的赋值是一个语句,而不是一个表达式。它不能用作控制语句的条件。
在 Swift 中,控制语句的条件必须显式为 Bool
。没有其他类型会自动强制转换为 Bool
。即使赋值是一个表达式,if (x = 1)
仍然会被禁止,因为 x = 1
的类型是 x
,它不能是 Bool
,因为 1 不是 Bool
值。
因此没有理由在 Swift 中使用 Yoda 条件(除非您出于其他原因发现它更清晰)。
另请注意,如果您将赋值用作条件,许多其他语言的现代编译器会打印警告,因此 Yoda 语法不像以前在 C、C++ 和 Objective-C 中那样有用。
关于swift - 您如何看待 Swift IOS 中的 Yoda 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45617118/