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直接通过下标的方式来设置和获取了。是不是感觉帅帅的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,861评论 1 10
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,854评论 0 6
  • 阿宝和他爸爸一样爱吃甘蔗,晚上看他奶奶在啃甘蔗就站他奶奶旁边说要吃。他奶奶咬一口给他,他还嫌弃小。看他爸爸过来就赶...
    蜗牛慢吞吞简爱阅读 191评论 0 0
  • 仲夏苦夜短,出门逛快闪。近期,生活中出现一种新型时尚的商业模式——快闪店,所谓快闪,就是指出现在繁华商业区无需久留...
    Eramus5阅读 270评论 14 0
  • every()对数组中的每一项都运行给定函数,返回值:当且仅当全部true时,才会返回true filter()对...
    c59ffede9db6阅读 212评论 0 0