个人认为下标脚本语法其实就是把几个方法几写在一起,通过下标来调用对应的方法。
注意: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
通过上边的这几个不同的输出语句以及控制台的输出结果相信大家可以很好的理解这几个语法。