类、结构体和枚举可以定义下标,它可以作为访问集合、列表或序列成员元素的快捷方式。
下标的语法
subscript(index: Int) -> Int {
get {
// 返回一个适当的 Int 类型的值
}
set(newValue) {
// 执行适当的赋值操作
}
}
1.给自定义对象添加类似数组的特性,添加下标
class Person {
// 如果是只读属性,可简写
subscript(index: Int) -> Int { index }
var name: String = “”
}
var person = Person()
let index = person[1]
需要注意: var person: Person? = Person()
let index = person[1] // 其中index是可选类型Int?
如果person是可选类型?
person?.name = getName()
那么getName()是不会调用的,编译器的特性,也可以理解,如果左边的为nil,这么代码就停止了,不会接着调用了,类似于if 多条件语句,
if flag1 && flag2 { … }
一旦发现flag1为false,那么flag2就不会执行判断
2.那么问题来了
var num2: Int? = nil
num2? = 10
print(num)
请问打印什么 答案: nil 为什么? 是因为这个是使用了可选链,发现了是num2== nil nil?便是可选链,不再继续执行赋值操作
var num2: Int? = nil
num2 = 10
print(num2)
请问这个又打印什么 这里只是简单的赋值操作,所以打印Optional(10)