Swift学习 (二)
2.控制流:
主要有三种类型的语句
if,switch和新增的guard
for,while
break,continue
关于if
语句里的条件不再需要使用()包裹了。
|
1
2
3
4
|
let number = 23if number < 10 { print("The number is small")} |
但是后面判断执行的的代码必须使用{}包裹住。
if 后面的条件必须为Boolean表达式
也就是不会隐式地与0进行比较,下面这种写法是错误的,因为number并不是一个boolean表达式,number != 0才是。
|
1
2
3
|
int number = 0if 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") breakdefault: 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学习 (二)的更多相关文章
- 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 ...
随机推荐
- flask中使用ajax 处理前端请求 弹框展示
菜小鱼初次使用 ajax,想前端提交数据,后端处理后,将结果以弹框的形式展示,在网上查看了好多,不停的调试,终于调通了 html: <html> <head></head ...
- 神经网络(3)---如何表示hypothesis,如何表示我们的model
大脑中的神经元 我们的大脑都充满了上图所示的神经元,神经元有一个细胞体(cell body),还有一些input wires,专业词汇叫做树突(dendrite),它们从其它地方接收输入信息,神经元还 ...
- mysql中删除重复数据
//首先我们需要知道我们重复的都有哪些数据, //第一步:进行对数据表进行分组,group by. //第二步:进行后通过having进行限制筛选,条数大于等于2的 //第三步:进行多表删除. //案 ...
- python类内置方法之__call__
在python中自定义类时,如果该类实现了一个特殊方法__call__(),那么该类的实例则变成一个可调用的实例对象 如下 In [1]: class A():# 自定义一个A ...: def __ ...
- HTML 文字垂直剧中
HTML 有个使文字垂直剧中的代码 line-height: line-height:使用时 总高多少 后边就输入多少PX 剧中前展示 剧中后展示
- PostgreSQL 慢查询SQL语句跟踪
示例:启用 SQL 跟踪PostgreSQL 日志支持的输出格式有 stderr(默认), csvlog , syslog 一般的错误跟踪,只需在配置文件 [postgresql.conf]简单设置几 ...
- 【概率论】5-1:分布介绍(Special Distribution Introduction)
title: [概率论]5-1:分布介绍(Special Distribution Introduction) categories: - Mathematic - Probability keywo ...
- JDBC_MySQL8.0.13_连接测试
前言 手贱把MySQL升级到了8.0.13,在IntelliJ IDEA中测试连接不上.因此记录一下,供个人以后参考. 系统环境 win10x64 jkd11 IDEA MySQL 8.10.13 C ...
- 异步协程asyncio+aiohttp
aiohttp中文文档 1. 前言 在执行一些 IO 密集型任务的时候,程序常常会因为等待 IO 而阻塞.比如在网络爬虫中,如果我们使用 requests 库来进行请求的话,如果网站响应速度过慢,程序 ...
- html页面引入vue组件
html页面引入vue组件需要在页面引入http-vue-loader.js 注意:要查看页面引入vue组件的效果不能直接在本地打开index.html,会有跨域问题,可以在本地配置一个nginx转发 ...