Swift学习 (二)
2024-09-01 14:13:58
2.控制流:
主要有三种类型的语句
if,switch和新增的guard
for,while
break,continue
关于if
语句里的条件不再需要使用()包裹了。
1
2
3
4
|
let number = 23 if number < 10 { print( "The number is small" ) } |
但是后面判断执行的的代码必须使用{}包裹住。
if 后面的条件必须为Boolean表达式
也就是不会隐式地与0进行比较,下面这种写法是错误的,因为number并不是一个boolean表达式,number != 0才是。
1
2
3
|
int number = 0 if number{ } |
关于for
for循环在Swift中变得更方便,更强大。
得益于Swift新添加的范围操作符...与...<
我们能够将之前繁琐的for循环:
1
2
3
4
|
for (int i = 1; i <= 5; i++) { NSLog(@ "%d" , i); } |
改写为:
1
2
3
|
for index in 1...5 { print(index) } |
虽然在《The Swift Programming Language》里面没有提到类似的用法,但是在Swift中我们也有优雅的方法办到。
1
2
3
|
for index in stride(from: 1, through: 5, by: 2) { print(index) } // through是包括5 |
然后对字典的遍历也增强了.在Objective-c的快速枚举中我们只能对字典的键进行枚举。
1
2
3
4
|
NSString *key; for (key in someDictionary){ NSLog(@ "Key: %@, Value %@" , key, [someDictionary objectForKey: key]); } |
而在Swift中,通过tuple我们可以同时枚举key与value:
1
2
3
4
|
let dictionary = [ "firstName" : "Mango" , "lastName" : "Fang" ] for (key,value) in dictionary{ print(key+ " " +value) } |
关于Switch:
Swich在Swift中也得到了功能的增强与安全性的提高。
不需要Break来终止往下一个Case执行
也就是下面这两种写法是等价的。
1
2
3
4
5
6
7
8
9
|
let character = "a" switch character{ case "a" : print( "A" ) break case "b" : print( "B" ) break default : print( "character" ) |
1
2
3
4
5
6
7
|
let character = "a" switch character{ case "a" : print( "A" ) case "b" : print( "B" ) default : print( "character" ) |
这种改进避免了忘记写break造成的错误,自己深有体会,曾经就是因为漏写了break而花了一段时间去debug。
如果我们想不同值统一处理,使用逗号将值隔开即可。
1
2
3
4
|
switch some value to consider { case value 1,value 2: statements } |
在Swift中,Switch支持的类型大大的拓宽了。
这意味在开发中我们能够能够对字符串,浮点数等进行匹配了。
之前在OC繁琐的写法就可以进行改进了:
1
2
3
4
5
6
7
8
9
|
if ([cardName isEqualToString:@ "Six" ]) { [self setValue:6]; } else if ([cardName isEqualToString:@ "Seven" ]) { [self setValue:7]; } else if ([cardName isEqualToString:@ "Eight" ]) { [self setValue:8]; } else if ([cardName isEqualToString:@ "Nine" ]) { [self setValue:9]; } |
1
2
3
4
5
6
7
8
9
10
|
switch carName{ case "Six" : self.vaule = 6 case "Seven" : self.vaule = 7 case "Eight" : self.vaule = 8 case "Night" : self.vaule = 9 } |
最新文章
- 通过navigationController跳转界面时隐藏navigationBar上的元素
- webpack配置es6开发环境
- 内存管理_深入剖析volatile关键字
- PHP Warning: Module &#39;modulename&#39; already loaded in Unknown on line 0
- Android之Activity的几种跳转方式
- 为什么使用开源软件(Open Source Software)
- 新手留言薄asp.net MVC 学习(适合新手学习)
- MongoDB入门分享-笔记整理精选
- C#开发的进化史
- 解决手机浏览器和微信中select中border:none;无用和去掉小三角
- Ansible性能调优
- 【nowcoder】 4th T2 区间
- 微信小程序 拖动图片一边进行截取
- android修改getprop读取到的ro.build.fingerprint属性
- LabVIEW(十四):VI属性
- linux系统管理 vi编辑器
- 入门NodeJS
- Objective-C 入门笔记
- C#基础第四天-作业-Hashtable-list<;KeyValuePair>;泛型实现名片
- DEXSeq
热门文章
- Java8新特性--函数式编程
- 「数据结构与算法之链表(Python)」(四)
- Codeforces Round #413 (Div1 + Div. 2) C. Fountains(树状数组维护最大值)
- Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
- ZooInspector使用
- LOJ P10149 凸多边形的划分 题解
- 三十二. 多表查询 MySQL管理工具 、 用户授权及撤销
- URL中的String参数问题
- PCIe - 周扒皮,扒扒TLP层
- 配置Jupyter Notebook