一位老C程序员可以使用Swift的一些帮助.
我不了解if-case语法.例如:
if case 20...30 = age {
print ("in range.")
}
Run Code Online (Sandbox Code Playgroud)
在case 20...30 = age
似乎是在条件测试if
语句.所以我最初很困惑,看到使用了赋值运算符('=')而不是比较运算符('==').
好吧,我心想,这可能意味着该case
语句实际上是一个返回布尔值的函数调用.然后,返回的值将满足if
语句中的比较测试.
作为一个实验,我尝试将case
语句视为常规条件测试,并在其周围放置括号.斯威夫特很乐意接受if (x == 5)
或if (true)
.但是会if (case 20...30 = age)
产生错误.因此case
声明似乎不像函数那样.
我很想知道这里发生了什么.任何见解将不胜感激.
mat*_*att 21
操作员是if case
,所以你不能放括号.语法和行为基于case
Swift switch
语句中的语句(如果需要详细信息,请参阅我的在线书籍).在case
语句中,20...30
是一个区间,用作模式,通过使用contains
区间来操作.等号确实令人困惑,但这是他们首次尝试使用语法来表达case
语句应该与之比较的内容(即语句中关键字后面的标记).switch
switch
所以,如果你明白这一点:
switch age {
case 20...30:
// do stuff
default:break
}
Run Code Online (Sandbox Code Playgroud)
...然后你就会明白它是如何直接变成这样的:
if case 20...30 = age {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
@matt很好地解释了代码的作用.我在这里建议一个更好的选择.
您可以使用~=
运算符来检查范围.它是一个常规的操作符/函数,只返回一个Bool
,没有特殊的语言魔法.
if 20...30 ~= age {
print ("in range.")
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6277 次 |
最近记录: |