Swift中的 === 和 == 运算符使用

简介】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 关键字转换为同一个类型

参考文档

Swift3.0中文文档

© 著作权归作者所有
这个作品真棒,我要支持一下!
记录日常开发时所遇到的问题和解决方案,同时也会收藏一些学习时记录的笔记,随想以及翻译的博客等。 个人现在依然专注于...
0条评论
top Created with Sketch.