Swift自定义类使用下标

数组和字典等集合类型,可以通过下标的方式来快速获取相对应的值。在swift中,可以通过subscript来实现这个功能。

假设有一个学生类,有一个成员属性names来记录所有学生的姓名:

class Students {
    var names: [String] = {
        return ["Wangxiaole", "Guanyi", "Liuxiang"]
    }()
}

let students = Students()
let name = students.names[0]

那么在获取数组中指定位置的元素,需要通过names来获取元素。而使用subscript后:

extension Students {
    subscript(n: Int) -> String {
        return names[n]
    }
}

let name2 = students[0]

这样就可以不通过访问names来获取指定的学生姓名。可是这样只能用下标来获取元素,如果要设置则需要实现get和set方法:

extension Students {
    subscript(n: Int) -> String {
        get {
            return names[n]
        }
        set(name) {
            names[n] = name
        }
    }
}

let name3 = students[0]
students[0] = "XXXX"

这样就可以将names直接通过下标的方式来设置和获取了。是不是感觉帅帅的。

你可能感兴趣的:(Swift自定义类使用下标)