老的C程序员可以在Swift上使用一些帮助。
我对if-case语法不了解。例如:
if case 20...30 = age { print ("in range.") }
在case 20...30 = age似乎是在条件测试if语句。因此,最初让我感到困惑的是看到使用赋值运算符(’=’)而不是比较运算符(’==’)。
case 20...30 = age
if
好的,我想自己,这可能意味着该case语句实际上是一个返回布尔值的函数调用。然后,返回的值将满足if语句中的比较测试。
case
作为实验,我尝试将case语句像常规条件测试一样对待,并在其周围加上括号。斯威夫特乐于接受if (x == 5)或if (true)。但是会if (case 20...30 = age)产生一个错误。因此,该case语句的行为似乎不像函数。
if (x == 5)
if (true)
if (case 20...30 = age)
我只是想了解这里发生的事情。任何见识将不胜感激。
运算符是if case,因此您不能放在括号中。语法和行为基于caseSwift switch语句中的语句和语法(如果需要详细信息,请参阅我的在线书)。在case语句中,20...30是一个间隔,用作 模式 ,通过contains对间隔进行操作。等号确实确实令人困惑,但这是他们首次尝试使用一种语法来表达该case语句应与之进行比较(即,语句中关键字后面的 标记 )。switch``switch
if case
switch
20...30
contains
switch``switch
因此,如果您了解这一点:
switch age { case 20...30: // do stuff default:break }
…然后您就会了解它是如何直接变形为以下形式的:
if case 20...30 = age { // do stuff }