if
在控制语句中(if,while等),如果遇到要判断变量是否为空的情况,可以使用如下方式进行拆包:
if let obj = x{ code } 。
let 语句会将 x 拆包(unwrap)并赋值(assign)给obj。这样,如果 x 为nil,那么就会跳过 code 部分;相反,在code部分就可以使obj的值来进行编码。
对于元组这样的,包裹(wrap)类型的变量,也可以使用这样的方式,来进行解包(unwrap)。
另一种使用可选变量(optional)的方式是使用 ??(双问号)。例如:A??B。如果A 为 nil,那么就是用 B 的值。
switch
swift中,switch语句变得更灵活了。C,OC中的 switch case中,条件中只能是 数字类型的(int,枚举等等)。但是在swift中,可以使用字符串,元组,甚至是判断语句,可以说非常灵活。
同时,如果开发者不使用 fall through 关键词的话,case语句是不会穿透的。这样降低了由于疏忽,没有用break而产生错误的可能。
但是,swift中,除非能列出所有的情况,否则,必须加上 default。swift是非常严谨的语言。
例:
for in
使用for in 可以便利数组和字典。在OC中,也可以使用for in 来遍历字典,但是用起来比较繁琐(使用字典的allkeys,得到所有的key,然后用for in 遍历这些key,从而得到相应的value)。swift中,使用for in 遍历字典相当方便。例:
这里,只需要为 for in 提供一组 key 和 value 的名称就能进行字典的遍历。依靠swift强大的类型推断能力,开发中可以不需要给出类型。
在for in 中可以使用 ..< 来遍历一组数据。例:
图中所示的 index 是 0,1,2,3不包括4,如果要包括,使用 0...4
while/repeat while
同 C,OC 中的 while 和 do...while一致。