iOS开发Swift-控制流
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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2022-08-24 面经-并发-对ThreadLocal(线程隔离)的理解
2022-08-24 面经-并发-HashTable与ConcurrentHashMap比较
2022-08-24 面经-并发-悲观锁和乐观锁
2022-08-24 面经-并发-volatitle
2022-08-24 面经-并发-Lock与synchronized比较
2022-08-24 面经-并发-wait与sleep的比较
2022-08-24 面经-并发-线程池核心参数