【简介】Swift 中有几个基本运算符需要注意的有 == 和 !=,=== 和 !== 这两对运算符的使用。
类和结构体
- 类:属于一种==引用==类型,相当于有一个引用类型的指针引用(指向)了一块内存空间。在赋值操作中,==不会==发生类内存空间的==拷贝==
- 结构体:属于一种==值==类型。在赋值操作中,==会==发生类内存空间的==拷贝==
运算符说明
- “等价于===”表示两个类类型(class type)的常量或者变量引用同一个类实例。
- “等于==”表示两个实例的值“相等”或“相同”,判定时要遵照设计者定义的评判标准,因此相对于“相等”来说,这是一种更加合适的叫法。
class a {
var dd: Int?
}
class b {
var cc: Int?
}
class c: a {
var cc: Int?
}
let aa: a = a()
let cc: a = c()
let bb: b = b()
let aa1 = aa
let cc1: c = cc as! c
if aa === cc {
print("相等")
} else {
print("不相等")
}
if aa === aa1 {
print("相等")
} else {
print("不相等")
}
if cc === cc1 {
print("相等")
} else {
print("不相等")
}
输出结果为:
不相等 相等 相等
注意事项
- == 和 === 操作运算符可以重写,也就是说可以根据不同的类改变其等价或者相等的规则。
- 引用类型不能用 == 进行比较,除了重写其对应的运算符方法
- 子类和父类可用 === 进行比较不过需要用 ==as==关键字转换为同一个类型