从今天开始学习Swift-2016-3-16;
先学习简单语法,不涉及详细API
Swift 3.0已经移除i++方法,请使用i+=1
快捷键
1 | //格式化代码 |
一些琐碎
1 | //swift是一门安全的语言 |
常量和变量
1 | print("hello world"); |
##数组和字典1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24//定义数组,使用[]访问元素
var list = [1,2,3,4,5];
print(list);
print(list[0]);
//定义字典,使用key访问
var map = ["a":1,"b":2,"c":3];
print(map);
print(map["a"])
print(map["a"]! + 100)
//如果列表和字典的类型可以被推断出来,可以不使用类型,也不用带(),在下面,shoplist首先被声明为String类型的数组,后又重新赋值,此时可以推断shoplist 是[String]
var shoplist = [String]()
shoplist = []
//跟常量和变量的定义一样,如果类型可以被推断时,可以不使用类型声明,上面的list和map类型已经可以推断,当将它重新指向空的数组和字典
list = []
map = [:]
//定义空的数组和字典
var emptyList = [String]()
var emptyMap = [String:Int]()
print(emptyList.count)
print(emptyMap.count)
控制流
for
1 | let testList = [1,2,3,4,5,6,7,8]; |
if关键字
1 | //涉及可选型的概念,后面单独介绍 |
switch关键字
1 | //swift支持任意数据类型的switch比较,不仅限于Int和enum |
while/repeat…while
1 | //while/repeat...while循环, 当while语句成立时,语句体会执行。 |
操作符
可选值操作符(??)
1 | //有点类似三目运算符,??表示默认值,当前面的值为空时将会使用后面的 |
范围操作符(..>/…)
1 | //提供一种更简单实现循环的方式,...包含上界 |
强制解包操作符(!)
1 | //强制解包 unwrap 解包的概念会在可变型中介绍 |
函数和闭包
简述
1 | 函数是一个可以被抽取调用的封闭代码块,是可以被传递的数据类型 |
一个简单函数
1 | //函数使用func关键字命名 |
返回多个值
1 | //可以使用元组返回多个值,实际上是以元组作为值传递的方式 |
可变长度参数函数
1 | //跟所有的语言一样,支持可变长度参数,本质是数组的传递 |
###函数嵌套定义1
2
3
4
5
6
7
8
9
10
11//函数可以嵌套定义,被嵌套的函数作用域有限,只能在嵌套它的{}中被访问,比如下面(1)中的代码是编译错误的,被嵌套的函数可以访问外面函数的变量或者全局变量,
func aOutFun() -> Void{
var num = 100
func aInFun()->String{
return "chendong \(num)"
}
print(aInFun())
}
aOutFun()
//1 编译错误
aInFun()
函数作为返回值
1 | //函数作为返回值,下面的函数表示一个无参函数,返回值是一个(参数为Int,返回值是String的)函数类型,在函数returnFuncFun中定义内嵌函数并返回,在外部可以使用该函数 |
函数作为参数传递
1 | //函数作为参数,下面的函数表示一个参数为Int类型,一个参数为(Int->String)的函数类型,返回值String |
匿名函数闭包
1 | //匿名闭包(in 前面是参数类型,in后面的是函数体) |