一尘不染

在if-case中,大小写如何运作

swift

老的C程序员可以在Swift上使用一些帮助。

我对if-case语法不了解。例如:

if case 20...30 = age {
   print ("in range.")
}

case 20...30 = age似乎是在条件测试if语句。因此,最初让我感到困惑的是看到使用赋值运算符(’=’)而不是比较运算符(’==’)。

好的,我想自己,这可能意味着该case语句实际上是一个返回布尔值的函数调用。然后,返回的值将满足if语句中的比较测试。

作为实验,我尝试将case语句像常规条件测试一样对待,并在其周围加上括号。斯威夫特乐于接受if (x == 5)if (true)。但是会if (case 20...30 = age)产生一个错误。因此,该case语句的行为似乎不像函数。

我只是想了解这里发生的事情。任何见识将不胜感激。


阅读 305

收藏
2020-07-07

共1个答案

一尘不染

运算符是if case,因此您不能放在括号中。语法和行为基于caseSwift
switch语句中的语句和语法(如果需要详细信息,请参阅我的在线书)。在case语句中,20...30是一个间隔,用作
模式
,通过contains对间隔进行操作。等号确实确实令人困惑,但这是他们首次尝试使用一种语法来表达该case语句应与之进行比较(即,语句中关键字后面的
标记 )。switch``switch

因此,如果您了解这一点:

switch age {
case 20...30:
    // do stuff
default:break
}

…然后您就会了解它是如何直接变形为以下形式的:

if case 20...30 = age {
   // do stuff
}
2020-07-07