swift - 您如何看待 Swift IOS 中的 Yoda 条件

标签 swift conditional-statements

<分区>

我只是想从有经验的 IOS 开发人员那里了解使用“yoda 条件”的优点和缺点是什么。因为我正在学习快速语言。我对这个话题了解不多。我没有找到任何合适的答案。任何帮助将不胜感激。谢谢。

最佳答案

C、C++、Objective-C 和 Java(以及其他一些语言)具有三个以容易出错的方式协同工作的属性:

  1. 赋值是一个表达式。也就是说,x = 1 是一个带有值(本例中的值 1)的表达式

  2. 控制流语句(如 ifwhile 语句)中的条件允许任何可以强制转换为 bool 值的表达式。整数、 float 和指针都可以强制转换为 bool 值:零或 null 表示假,其他任何表示真。

  3. 赋值运算符=和相等运算符==非常相似。

因为这三个特点,当你想写if (x == 1)时,很容易不小心写了if (x = 1)。您的程序仍然可以编译,但有时可能会出现错误。

“Yoda 条件”是一种有助于防止此错误的样式。如果你习惯写 if (1 == x),而你不小心写了 if (1 = x),你的程序将无法编译。

但是,if (x = 1) 错误不会在 Swift 中发生,因为 Swift 缺少上述三个属性中的两个。

  1. 在 Swift 中,像 x = 1 这样的赋值是一个语句,而不是一个表达式。它不能用作控制语句的条件。

  2. 在 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/

相关文章:

ios - 如何快速使用 Google Sign-In API

ios - 如何在IOS Swift中获取FBSDKAccessToken

swift - AVSpeechUtterance:如何获取随机数组并使用特定语音?

python - python的不等式/数值+条件语句?

c# - 或||条件

java - sql查询条件java servlet

swift - UNUserNotificationCenterDelegate willPresent 不适用于 OneSignal

ios - swift ios 试图改变某些 VC 上状态栏的颜色

python - 是否有可能根据关键字列表创建新列

MySQL用条件语句触发并更新另一个表