美文网首页
swift下标脚本语法、willSet、didSet方法

swift下标脚本语法、willSet、didSet方法

作者: BetterComingDay | 来源:发表于2016-12-30 12:50 被阅读59次

    个人认为下标脚本语法其实就是把几个方法几写在一起,通过下标来调用对应的方法。
    注意:willSet、didSet 不能跟set、get同时出现

    //下标脚本语法 subscript是关键字
    class Person{
        var name:String="默认值"{
            //这里的(newValue)可以省略,然后方法体里边的newValue还可以继续用
    //        set(newValue){
    //          self.name = newValue
    //        }
    //        get{
    //            return self.name
    //        }
            //willSet、didSet 不能跟set、get同时出现
            willSet(newValue){
                print("现在马上要用 '\(newValue)' 替换 '\(self.name)'")
            }
            //(oldValue)可以省略 写成didSet{
            didSet(oldValue){
                print("'\(self.name)' 已经替换了 '\(oldValue)'")
            }
        }
        var age:Int?
        var salary:Int?
        //身高
        var height:Int?
        subscript(index:Int) -> Int{
            get{
                switch index{
                case 0:
                    return self.age ?? 0
                case 1:
                    return self.salary ?? 0
                case 2:
                    return self.height ?? 0
                default:
                    return 0
                }
            }
            //这里省略了(newValue)
            set{
                switch index{
                case 0:
                    self.age = newValue
                case 1:
                    self.salary = newValue
                case 2:
                    self.height = newValue
                default:
                    return
                }
            }
        }
    }
    
    let per = Person()
    per.name = "阿尔卡蒂奥"
    per[0] = 25
    print("\(per.name)年龄是:",per[0])
    per.salary = 1000
    print(per.name+"工资是:",per[1])
    per.height = Int(1.85)
    print(per.height ?? 1.95)
    

    控制台结果:

    现在马上要用 '阿尔卡蒂奥' 替换 '默认值'
    '阿尔卡蒂奥' 已经替换了 '默认值'
    阿尔卡蒂奥年龄是:25
    阿尔卡蒂奥工资是: 1000
    1
    

    通过上边的这几个不同的输出语句以及控制台的输出结果相信大家可以很好的理解这几个语法。

    相关文章

      网友评论

          本文标题:swift下标脚本语法、willSet、didSet方法

          本文链接:https://www.haomeiwen.com/subject/qykmvttx.html