目录
- 版本
- 下标
- 语法
- 应用
版本
Xcode 11.3.1
Swift 5.1.3
下标
下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。
可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。例如,用下标脚本访问一个数组(Array)实例中的元素可以这样写 someArray[index] ,访问字典(Dictionary)实例中的元素可以这样写 someDictionary[key]。
对于同一个类型可以定义多个下标脚本,通过索引值类型的不同来进行重载,而且索引值的个数可以是多个。
语法
使用 subscript 关键字修饰。
与实例方法类似,下标显式声明入参(一个或多个)和返回类型。
与实例方法不同,下标可以设定为读写或只读, 有点像计算型属性的getter和setter。
基本用法:
subscript(形参列表) -> 下标返回值类型 {
get {
// getter方法执行体, 必须有返回值
}
set(形参名) {
// setter方法执行体, 不能有返回值
}
}
应用
示例:
struct Sample {
var a = 10
var b = 20
var c = 30
subscript(index: Int) -> Int {
// getter
get {
switch (index) {
case 0:
return self.a
case 1:
return self.b
case 2:
return self.c
default:
print("非法的索引值")
return 0
}
}
// setter
set (aValue) {
switch (index) {
case 0:
self.a = aValue
case 1:
self.b = aValue
case 2:
self.c = aValue
default:
print("非法的索引值")
}
}
}
}
var sample = Sample()
print("a=\(sample[0]), b=\(sample[1]), c=\(sample[2])")
// a=10, b=20, c=30
let d = sample[3]
// 非法的索引值
sample[0] = 11
sample[1] = 22
sample[2] = 33
print("a=\(sample[0]), b=\(sample[1]), c=\(sample[2])")
// a=11, b=22, c=33
上面的例子中可以省略setter的形参, 使用默认的参数名newValue
网友评论