Swift学习 (二)
2.控制流:
主要有三种类型的语句
- if,switch和新增的guard 
- for,while 
- break,continue 
关于if
语句里的条件不再需要使用()包裹了。
| 1 2 3 4 | let number = 23ifnumber < 10 {    print("The number is small")} | 
但是后面判断执行的的代码必须使用{}包裹住。
if 后面的条件必须为Boolean表达式
也就是不会隐式地与0进行比较,下面这种写法是错误的,因为number并不是一个boolean表达式,number != 0才是。
| 1 2 3 | int number = 0ifnumber{} | 
关于for
for循环在Swift中变得更方便,更强大。
得益于Swift新添加的范围操作符...与...<
我们能够将之前繁琐的for循环:
| 1 2 3 4 | for(int i = 1; i <= 5; i++){    NSLog(@"%d", i);} | 
改写为:
| 1 2 3 | forindex in1...5 {    print(index)} | 
虽然在《The Swift Programming Language》里面没有提到类似的用法,但是在Swift中我们也有优雅的方法办到。
| 1 2 3 | forindex instride(from: 1, through: 5, by: 2) {    print(index)}// through是包括5 | 
然后对字典的遍历也增强了.在Objective-c的快速枚举中我们只能对字典的键进行枚举。
| 1 2 3 4 | NSString *key;for(key insomeDictionary){     NSLog(@"Key: %@, Value %@", key, [someDictionary objectForKey: key]);} | 
而在Swift中,通过tuple我们可以同时枚举key与value:
| 1 2 3 4 | let dictionary = ["firstName":"Mango","lastName":"Fang"]for(key,value) indictionary{    print(key+" "+value)} | 
关于Switch:
Swich在Swift中也得到了功能的增强与安全性的提高。
不需要Break来终止往下一个Case执行
也就是下面这两种写法是等价的。
| 1 2 3 4 5 6 7 8 9 | let character = "a"switchcharacter{    case"a":        print("A")    break    case"b":        print("B")    breakdefault: print("character") | 
| 1 2 3 4 5 6 7 | let character = "a"switchcharacter{    case"a":        print("A")    case"b":        print("B")default: print("character") | 
这种改进避免了忘记写break造成的错误,自己深有体会,曾经就是因为漏写了break而花了一段时间去debug。
如果我们想不同值统一处理,使用逗号将值隔开即可。
| 1 2 3 4 | switchsome value to consider {casevalue 1,value 2:    statements} | 
在Swift中,Switch支持的类型大大的拓宽了。
这意味在开发中我们能够能够对字符串,浮点数等进行匹配了。
之前在OC繁琐的写法就可以进行改进了:
| 1 2 3 4 5 6 7 8 9 | if([cardName isEqualToString:@"Six"]) {    [self setValue:6];} elseif([cardName isEqualToString:@"Seven"]) {    [self setValue:7];} elseif([cardName isEqualToString:@"Eight"]) {    [self setValue:8];} elseif([cardName isEqualToString:@"Nine"]) {    [self setValue:9];} | 
| 1 2 3 4 5 6 7 8 9 10 | switchcarName{    case"Six":        self.vaule = 6    case"Seven":        self.vaule = 7    case"Eight":        self.vaule = 8    case"Night":        self.vaule = 9   } | 
Swift学习 (二)的更多相关文章
- Swift学习二
		// 定义枚举方式一 enum Season { // 每个case定义一个实例 case Spring case Summer case Fall case Winter } // 定义枚举方式二 ... 
- swift学习二:基本的语法
		声明本文转载自:http://www.cocoachina.com/applenews/devnews/2014/0603/8653.html Swift是什么? Swift是苹果于WWDC 2014 ... 
- 【swift学习笔记】二.页面转跳数据回传
		上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ... 
- iOS ---Swift学习与复习
		swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ... 
- Swift学习与复习
		swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ... 
- 今天开始Swift学习
		今天开始Swift学习 在此记录笔记 以备之后查阅! allenhuang 
- emberjs学习二(ember-data和localstorage_adapter)
		emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ... 
- 12套swift学习资源分享
		虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ... 
- ReactJS入门学习二
		ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ... 
- TweenMax动画库学习(二)
		目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ... 
随机推荐
- Nginx入门(二)——双机热备
			upstream backend { server ; server backup; } server { listen ; server_name localhost; #charset koi8- ... 
- Mybatis的简单搭建
			1.官方网址 http://www.mybatis.org/mybatis-3/zh/getting-started.html 2.导入jar包 3.根据官方文档,首先写mybatis-config. ... 
- CSS3限,2行3行等文字在块元素显示的文字内容超出显示省略号
			大家都知道文字超出一行显示省略号用css就可以搞定,但2行.3行等多行超出显示省略号有的人就不知怎么搞了,我用js做过一个文字判断有兴趣的可以看一下传送门,今天就来试验一下多行超出省略号 使用时注意浏 ... 
- python 高阶函数之filter
			前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ... 
- TDOA基础之 delayed tx 实现说明
			不论是在TWR 还是TDOA定位算法中,delayed tx 都会用到,这篇博文主要解析delayed tx 实现. 何为delayed tx? delayed tx 是延时发送,为何要延时?因为这个 ... 
- 关于https的五大误区
			如今,https协议正在被广泛重视和使用.随着今年2月初,谷歌旗下Chrome浏览器宣布将所有http标示为不安全网站,许多网站都争相从http升级到了https.当你打开很多网站时,会发现浏览器左上 ... 
- myeclipse关掉references
			去掉下面两个勾选: 
- 洛谷 P3955 图书管理员 题解
			每日一题 day12 打卡 Analysis 模拟+快速幂 先把图书的编码存起来排序,保证第一个找到的就是最小的.如果要求一个数后x位,就将这个数模10的x次方,同理,我们可以通过这个规律来判断后缀. ... 
- kubernetes 部署metricserver
			本篇适用于kubeadm部署的k8s的集群 安装环境:首先要部署好k8s的集群,版本是1.11.1,我的虚拟机部署的,一个master节点,一个node节点.笔记本性能有限 下载metrics-ser ... 
- laravel-china 镜像停止服务
			php 的很多开发都会用到composer.然后国内的镜像又慢,很多人会选择用laravel-china的镜像. 之前一直用的很好.今天突然发现不能composer update.出现报错.WTF!! ... 
