Swift5.1学习随笔之下标subscript

2020-04-24  本文已影响0人  SAW_
下标subscript
class Point {
    var x = 0.0, y = 0.0
    subscript(index: Int) -> Double {
        set {
            if index == 0 {
                x = newValue
            }
            else if index == 1 {
                y = newValue
            }
        }
        get {
            if index == 0 {
                return x
            }
            else if index == 1 {
                return y
            }
            return 0
        }
    }
}
var p = Point()
p[0] = 11.1
p[1] = 22.2
print(p.x) // 11.1
print(p.y) // 22.2
print(p[0]) // 11.1
print(p[1]) // 22.2

subscript中定义的返回值类型决定了:

subscript可以接受多个参数,并且类型任意

下标的细节

subscript可以没有set方法,但必须有get方法

class Point {
    var x = 0.0, y = 0.0
    subscript(index: Int) -> Double {
        get {
            if index == 0 {
                return x
            }
            else if index == 1 {
                return y
            }
            return 0
        }
    }
}

如果只有get方法,可以省略get

class Point {
    var x = 0.0, y = 0.0
    subscript(index: Int) -> Double {
        if index == 0 {
            return x
        }
        else if index == 1 {
            return y
        }
        return 0
    }
}

可以设置自定义参数标签

class Point {
    var x = 0.0, y = 0.0
    subscript(index i: Int) -> Double {
        if i == 0 {
            return x
        }
        else if i == 1 {
            return y
        }
        return 0
    }
}
var p = Point()
print(p[index: 1]) // 必须加上index,否则报错

下标可以是类型方法,默认都是实例方法

class Sum {
    static subscript(v1: Int, v2: Int) -> Int {
        return v1 + v2
    }
}
print(Sum[1, 2]) // 3
上一篇下一篇

猜你喜欢

热点阅读