swift中的!=

我們知道在swift如果定義的struct model需要實(shí)現(xiàn)Equatable協(xié)議中的==操作符,一個(gè)最簡(jiǎn)單的例子:

Paste_Image.png

那么如果是Class呢?

Paste_Image.png

貌似也沒(méi)問(wèn)題。如果這個(gè)類(lèi)繼承自NSObject呢?

Paste_Image.png

好了,第一個(gè)問(wèn)題出現(xiàn)了,這個(gè)很簡(jiǎn)單,因?yàn)镹SObject已經(jīng)遵循了Equatable協(xié)議,所以編譯器會(huì)提示多余操作,直接刪除這行。

Paste_Image.png

應(yīng)該就可。。。

Paste_Image.png

WTF,a != b竟然也是true?

不是已經(jīng)指明了只要lhs.name == rhs.name就算相等了嗎?

難道編譯器沒(méi)有為我們實(shí)現(xiàn)!=操作符,而直接使用了父類(lèi)的!=操作符?我們來(lái)添加一個(gè)!=驗(yàn)證一下。

Paste_Image.png

終于對(duì)了,看來(lái)在子類(lèi)中沒(méi)有實(shí)現(xiàn)!=操作符會(huì)直接使用父類(lèi)的,此處的父類(lèi)為NSObject,而它的取等運(yùn)算使用的是hash值,那么兩個(gè)對(duì)象!=會(huì)返回true。

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 定義: 協(xié)議定義了一個(gè)藍(lán)圖,規(guī)定了用來(lái)實(shí)現(xiàn)某一特定的任務(wù)或者功能的方法、屬性,或其他需要的東西。類(lèi)、結(jié)構(gòu)體、枚舉都...
    geekLiu閱讀 1,532評(píng)論 0 1
  • 1、隨機(jī)數(shù) 不需要隨機(jī)數(shù)種子 arc4random()%N + begin:產(chǎn)生begin~begin+N的隨機(jī)數(shù)...
    我是小胡胡123閱讀 4,409評(píng)論 0 2
  • 一、類(lèi)的介紹和定義 Swift也是一門(mén)面向?qū)ο箝_(kāi)發(fā)的語(yǔ)言,面向?qū)ο蟮幕A(chǔ)是類(lèi),類(lèi)產(chǎn)生了對(duì)象; 在Swift中定義類(lèi)...
    magic_pill閱讀 783評(píng)論 0 1
  • 類(lèi)型 在Swift中,有兩種類(lèi)型:命名型類(lèi)型和復(fù)合型類(lèi)型。命名型類(lèi)型是在定義時(shí)可以給定的特定名字的類(lèi)型。命名型類(lèi)型...
    silly鴻閱讀 759評(píng)論 0 0
  • Swift2.0 1.defer譯為延緩、推遲之意類(lèi)似棧 注意作用域,其次是調(diào)用順序——即一個(gè)作用域結(jié)束(注意),...
    zeqinjie閱讀 3,518評(píng)論 0 50

友情鏈接更多精彩內(nèi)容