基础

常量和变量

let : 声明常量 var : 声明变量

let 常量名: 常量类型 var 变量名: 变量类型

类型是可选的, 如果不给出, Swift 会自动推导.

分号

只有在同一行内写多条语句时, 才必须使用, 其他情况是可选

类型

  • Int (与原生平台字长相同)
  • UInt 同上
  • Double 类型自动推导时, 浮点数 Swift 会选择 Double 而不是 Float
  • Float
  • Bool
  • 元组
  • 可选类型 optional

字面值

  • 十进制 : 没有前缀
  • 二进制 : 0b 前缀
  • 八进制 : 0o 前缀
  • 十六进制 : 0x 前缀

类型转换

SomeType(ofInitialValue)

类型别名

typealias NewName = OldName

nil

在 swift 中是一人确定的值, 表示值缺失.

可选绑定

可以有多个, 之间用分号分开, 每个相当于 &&

if let constName = someOptional {
    statements
}

隐式解析可选类型

let possibleString: String? = "Hello"
let forceString: String = possibleString!

let assumedString: String! = "Hello"
let implicitSTring: String = assumedString

这就是它们之间的区别

异常处理

do {
    try function()
} catch ExcpetionType {
    statements
}

运算符

恒等 和 不恒等

===!== 用来判断两个对象是否引用同一个实例.

空合运算符

a ?? b 相当于 a != nil ? a! : b

区间运算符

a...b (包含a也包含b)

for index in 1...5 {

}

半开区间

a..<b (包含a 但不包含b)

字符串

任何情况下, 都会对已有的字符串值创建新副本.

数组类型

[Int]

集合

Set<Type>

字典

Dictionary<Key, Value>

函数

func funcName(ParamterName:Type) [-> returnType] {
    statements
}

多返回值

func funcName(ParamterName:Type) -> (min: Int, max: Int) {
    statements
}

函数类型

var mathFunc:(Int, Int) -> Int = funcName

函数作为返回类型

func hello(pName: Type) -> (Int) -> Int {

}

可以嵌套函数

闭包

{(parameters) -> returnType in 
    statements
}

也可以通过使用 $0, $1 来调用闭包参数

结构体: 值类型

类: 引用类型