iOS开发之Swift篇(11)—— 下标

版本

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

猜你喜欢

转载自blog.csdn.net/u012078168/article/details/104501900