1.For-In循环
//集合循环
let names = ["a", "b", "c"]
for name in names {print("Hello, \(name)!")
}
//次数循环
for index in 1...5{print("Hello! + \(index)")
}
//不需要值时可以使用 _ 来忽略此值
for _ in 1...5{print("Hello!")
}
2.while循环
while a < b{ //直到a < b成为false时停止循环print(".")
}
3.Repeat-while循环
repeat {print(".")
} while a < b //先执行一次,然后a < b变成false时停止
4.If
if a < b {//语句1
} else if a = b {//语句2
} else {//语句3
}
5.Switch
Switch id {case "a":print("a") //不需要加break,不存在隐式贯穿case "b":print("b") //每种情况下必须包含语句,否则报错default:print("其他")
}
(1)复合匹配
switch id {case "a", "b": //如果写不下了可分行书写print("c")default:print("其他")
}
(2)区间匹配
switch id {case 1..<5:print("1~4")case 5..12:print("5~11")default:print("其他")
}
(3)元组匹配
switch somePoint {case (0,0): //从上到下一一匹配,如果多个case都匹配的话只取最前面print("0,0")case (_,0):print("几,0")case (0,_):print("0,几")default:print("其他")
}
(4)值绑定匹配
switch somePoint {case (let x, 0):print("\(x), 0")case (0, let y):print("0, \(y)")case let(x, y):print("\(x), \(y)")
}
(5)where
switch yetPoint {case let (x, y) where x == y:print("\(x) == \(y)")case let (x, y) where x == -y:print("\(x) == - \(y)")
}
6.控制转移语句
continue, break, fallthrough, return, throw
continue: 停止本次循环,开始下次循环
break: 立即结束整个控制流。可以使用break忽略switch的分支。
fallthrough贯穿: switch中的case加入贯穿,case会穿透到下一个case/ default。
7.带标签的语句
gameLoop: while a < b {a++switch a {case 1:continue gameLoop;case 2;break gameLoop;default:print("0")}
}
8.提前退出(guard)
guard 语句 else {//不满足条件语句的时候运行此处代码块return/break/continue/throw/调用无返回方法或函数
}
//满足条件语句时运行此处代码块
9.检测API可用性
if #available (iOS 10, macOS 10.12, *) {//iOS:平台名称。10:版本号。*:必须有,更高版本。//使用10版本API
} else {//使用之前版本的API
}