swift学习记录(===)

      "==="和"!=="在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见鬼去吧!!

      判断两个数组是否共用相同元素的===也一同不见了,再见不送!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值