"==="和"!=="在swift中有两类用处:1、判断两个对象是否引用同一个对象实例。2判断两个数组是否共用相同元素(已经被摒弃)。
1、判断两个对象是否引用同一个对象实例。这个语法对我来说,我是不喜欢的,因为the swift programing language 中同样指出,其实一个类的引用就相当于一个指针,那么判断两个对象是否引用同一个对象实例,只需要用“==”,为什么还要特意用“===”,看着有点画蛇添足。
class People{
var name:String
init(){
name =""
}
}
var a =People()
var b =a
//编译通过
if(a ===b){
println("===")
}
else {
println("!==")
}
//'People' is not converible to 'MirrorDispossition'编译错误
if(a ==b){
println("==")
}
else {
println("!=")
}
从基础语法推导,感觉上"=="行的通,但是在swift诡异的平台上却不行,不知道这样设计的优势在什么地方。
2、判断两个数组是否共用相同元素。数组虽然以结构体呈现,但是它是为了追求性能而造出来的怪物。NSArray 和NSDictionary是类,而swift中的数组和字典都是结构体实现的,但是数组是一个非常特殊的结构体,它的拷贝形式与一般的结构体不同(很特殊)。
数组不会轻易进行拷贝!
!!!!!!!!!!由于不知道的原因,在实际测试中,swift数组居然没有unshare和copy方法,好吧,那么先告一段落。
喜大普奔!!!通过翻阅英文版的the swift programming language 发现,数组中的unshare以及copy被一句话替代:“Swift manages all value copying to ensure optimal performance, and you should not avoid assignment to try to preempt this optimization.”让unshare和copy见鬼去吧!!
判断两个数组是否共用相同元素的===也一同不见了,再见不送!