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   
}

Swift学习 (二)的更多相关文章

  1. Swift学习二

    // 定义枚举方式一 enum Season { // 每个case定义一个实例 case Spring case Summer case Fall case Winter } // 定义枚举方式二 ...

  2. swift学习二:基本的语法

    声明本文转载自:http://www.cocoachina.com/applenews/devnews/2014/0603/8653.html Swift是什么? Swift是苹果于WWDC 2014 ...

  3. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  4. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  5. Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  6. 今天开始Swift学习

    今天开始Swift学习  在此记录笔记  以备之后查阅! allenhuang

  7. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  8. 12套swift学习资源分享

    虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...

  9. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  10. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

随机推荐

  1. 搭建Git服务器环境----Git hooks代码自动部署

    引言:自己想搭一套git的服务端环境,不想用github码云等.经多方资料整合,实验总结,以下是亲测有效的方式.可用于公司日常开发 一.搭建Git环境 ① 安装 Git Linux 做为服务器端系统, ...

  2. cpu 或 内存 偏高的分析套路

    参考资料: https://mp.weixin.qq.com/s/fb9YxJr-yDdYQ86RE47y1w 1)通过针对此软件专业的分析工具或命令,找到占用cpu高的函数,2)通过调用栈(或源码搜 ...

  3. python中的lambda()函数

    语句:print map(lambda x:x ** 2,[1,2,3,4,5]) 其中lambda()函数在Python文档,文档中解释如下: lambda An anonymous inline ...

  4. hadoop各版本下载地址

    http://mirror.bit.edu.cn/apache/hadoop/common/

  5. php面向对象之数据隐藏

    什么是数据隐藏? 看到这个有的人会觉得挺不理解的.在前面的文章中,介绍类的时候,我们说定义变量用的关键词是public,但是不止这一个,还有public.private.protected.stati ...

  6. 007_硬件基础电路_RC复位电路中二极管的作用

    --------------------- 作者:碎碎思 来源:CSDN 原文:https://blog.csdn.net/Pieces_thinking/article/details/781110 ...

  7. Ftp客户端需要TSL功能的文件上传

    Ftp客户端需要TSL功能 1.由于最近做了一个项目,需要把打包的文件传输到对方的FTP服务器上,但是用普通的java连接ftp客户端总是连接不上去,对方却说ftp客户端需要开通TSL功能. 直接上代 ...

  8. OSS的简单使用

    OSS简介 Object Storage Service,简称 OSS,是阿里云提供的海量.安全.低成本.高可靠的云存储服务. 它具有与平台无关的RESTful API接口,能够提供99.999999 ...

  9. Linux下基于Xampp的TestLink的安装部署

    由于项目需要,故需要搭建Testlink,且出于稳定,考虑在linux环境部署,当然windows系统也是可以的. 系统:64位操作系统 linux:centos6.8 testlink:1.9.14 ...

  10. Java学习日记——基础篇(三-上)基本语法之运算符和流程控制

    运算符 算术运算符 听其名而知其意,就是用于计算的,java中常用的是: +   加 -    减 *    乘 /    除 %  取模,取余——%可以用来得到两个数相除的余数 小练习——写一个ja ...