0. Classes、 structures 和 enumerations 都可以通过定义下标的方式来访问成员元素,一个类型可以定义 多个 不同的下标(subscript overloading),也可以定义 多维度 的下标
subscriptInstance[param] subscriptInstance[param1, param2] // 多参数 subscriptInstance[param][param] // 多维度
1. 定义下标和定义成员函数的语法相似,不过需要只 subscript 关键字,可以接受一个或多个参数,下标的函数体又和定义计算型属性语法相似
subscript(index: Int) -> Int { get { // return an appropriate subscript value here } set(newValue) { // perform a suitable setting action here } } // 只读的可以直接返回 subscript(index: Int) -> Int { // return an appropriate subscript value here }
2. 下标的参数还可以是可变参数(variadic parameters),但不能是 inout 参数或默认参数
3. 多维度的下标定义就是返回的类型也支持下标操作
4. 下标既可以是数组的 index,字典的 key,还可以是其他,它的含义就看你怎么使用它
P.S. 一个类型定义多个不同的下标就是一般所说的下标重载(subscript overloading)
原文 http://c0ming.me/swift-note-subscripts/