1. 在Swift中可以使用var, let声明变量, var定义变量时值可以改变, 使用let定义时值不可以改变(常量).
2. 编译器可以推断变量类型, 也可以明确告诉编译器, 如: let var : Int = 2.
3. Swift中变量声明时不指定类型, 必须拥有初始值.
4. Swift不要求每行以分号结尾, 但是多个语句放到一行时需要分号.
5. Swift中没有值和其他所有值区分开来, 没有值用nil表示, 是一种与其他类型都不同的类型.
6. OC中nil实际上是一个指向0的void指针, 可以进行操作: int i = (int)(nil) + 2, 但是Swift中不允许, 因为nil和Int是不同的类型.(大多数类型不能合并, 编译器不知道结果是什么类型)
7. 如果允许一个变量在某些时候为nil, 必须声明可选类型, 可选变量的定义, 其类型后面加一个问号: var option : Int? = nil
8. 只有可选变量才能被置为nil
9. 对于可选变量, 可以进行拆包操作(unwrap), 通过!实现, 当可选变量没有值时对其拆包, 将出现运行时错误(crash).
10. 如果不希望每次用到可选变量对其拆包, 可将其声明已拆包的, 这样直接可以用到他的值, 但这样不安全, 因为他的值有可能是nil.
var optional : Int!
print(optional)
11. 元组, 元组是数据的一个简单几何, 利用元组可将多个值绑定到单个值中, 元组取值可以用数字也可以用标签.
let aTuple = (1, "YES") ; let theNum = aTuple.0 ; print(aTuple)
let anotherTuple = (aString: "YES", aNuber: 1) ;
let theString = anotherTuple.aString; print(anotherTuple)
12. 数组, Swift中的数组很容易使用, 使用[]进行创建
整形数组: let array : [Int] = [1, 2, 3]
推断整形数组: let impoicitArray = [1, 2, 3]
空数组(空数组必须指定类型): let array = [Int]()
let声明的数组内容是不可变的, var声明的事可变的: var array = [1, 2, 3];
添加元素: array.append(4)
插入到指定位置(超出边界会出现运行时错误): array.insert(5, at: 3)
快速颠倒一个数组: array.reverse()
数组中项目的个数: array.count
13. 字典, 字典是一种将键映射到值的类型.
字典定义: var dict = ["key1": "value1", "key2": "value2"]
通过key进行修改: dict["key1"] = "modify value"
通过key获取value: var value2 = dict["key2"]
字典的键值可以是任意值: var dict = [1: 2]; var intValue : Int! = dict[1]
14. 控制流, Swift中的if语句和其他语言的if语句非常像, 只是不需要将表达式放到括号中
if 1+ 1 == 2 { //大括号必须添加, 否则编译错误\}
forin循环迭代每一项(forin number变量是隐士创建的, 不需要定义number变量就能让循环正常工作)
let loopArray = [1, 2, 3, 4]; var sum = 0;
for number in loopArray { sum += number }; print("sum = \(sum)")
可以使用forin迭代一个数值范围: '..<' 范围运算符(从第一个开始, 但不包含最后一个, 如果希望包含用 '...')
var counter = 0; for _ in 1 ..< 10 {}
while循环: var count = 5; while count > 5 {count -= 1}
15. if let, if let就是将一个可选变量的值给一个临时变量, Swift会自动检测optional变量是否有值, 如果有值会隐式拆包并给这个临时常量, 在接下来可以使用这个临时常量, 这种方式为可选绑定, 如果想操作可选值, 可以定义为if var 变量名.
var aString : String? = "a string"
if let theString =aString { print("the string is \(aString)");
}else { print("the string is nil") }
16. switch, switch是根据变量值运行代码的强大方式, Swift中switch的工作方式和c和oc有点不同, Swift中switch语句某一部分执行完毕后不会落入下一部分, 也就是说不必在最后使用break关键字. 在Swift中要么为所有可能的值提供一个case, 要么提供一个default case. switch不仅可以处理整数, 也可以多重类型进行切换.
let stringValue = "123"
switch stringValue {
case: "123": print("it's \(stringValue)")
default: print("it's unknown")
}
let tupleSwitch = ("YES", 123)
switch tupleSwitch {
case ("YES", "123"): print(tupleSwitch)
default: print("some thing wrong");
}