scribble

Leon's scribble.

About Email GitHub

08 Sep 2015
Swift 学习笔记:元组和类型别名

swift

 

元组

Swift 中的元组(tuples)类似于 JS 中的数组(Array),都可以放置任意类型。它还有点像 JS 中的对象(Object {}),因为可以给单个元素命名, 形成 key-value 结构,所以元组更像是 JS 中数组和对象的结合体。

定义一个元组:

let t1 = ("羽牧", 178)

t1 是一个类型为 (String, Int) 的元组。

定义的时候还可以给元组中的元素命名:

let t2 = (name: "羽牧", height: 178)

元组可以分解,分解方式就像是把上述代码反过来写,括号里定义常量或变量名:

let (name, height) = t1
println("My name is \(name), and my height is \(height) CM.")
// My name is 羽牧, and my height is 178 CM.

还可以通过元素名称来取值:

println("My name is \(t2.name), and my height is \(t2.height) CM.")

另外,不管有没有给元素命名,都可以通过下标来取值:

println("My name is \(t1.0), and my height is \(t1.1) CM.")

如果只要一部分元组的值,还可以用 _ 下划线标注相应的元素:

let (name, _) = t1

元组的分解过程与 JS ES6 中的解构写法类似:

var arr = [1, 2, 3];
var [first, second, third] = arr;

相当于:

var arr = [1, 2, 3];
var first = arr[0];
var second = arr[1];
var third = arr[2];

关于元组的使用场景,官方建议是只在临时组织值的时候用,比如在一个函数中返回多个不同类型的值,如果是创建复杂的数据结构,则建议用类或结构体。

类型别名

Swift 中可以用 typealias 关键字给现有类型定义一个别名,方便自己识别:

typealias Num = Int32

上述代码给 Int32 类型取了个别名叫 Num,以后定义一个 Int32 类型变量就可以这样:

var num1: Num = 12

或者这样:

var num2 = Num.max

Num.max 实际上是调用 Int32.max


Til next time,
Leon at 23:33

scribble

About Email GitHub