Equatable協(xié)議

   實(shí)現(xiàn)equatable協(xié)議的類型可以進(jìn)行 “==” 和 ”!=“ 操作搀矫。在swift標(biāo)準(zhǔn)庫(kù)的大多數(shù)類型都實(shí)現(xiàn)了此協(xié)議拌滋,包括String, Int等
   一些序列和集合實(shí)現(xiàn)這個(gè)協(xié)議的時(shí)候,使用起來(lái)將會(huì)更簡(jiǎn)單、方便。
   先看一下Equatable協(xié)議

<pre>
public protocol Equatable {
public static func ==(lhs: Self, rhs: Self) -> Bool
}
</pre>

   數(shù)組本身已經(jīng)實(shí)現(xiàn)Equatable協(xié)議,下面是數(shù)組的一個(gè)簡(jiǎn)單例子:

<pre>
let students = ["Nora", "Fern", "Ryan", "Rainer"]

let nameToCheck = "Ryan"

//對(duì)數(shù)組元素進(jìn)行contains操作
if students.contains(nameToCheck) {
print("(nameToCheck) is signed up!")
} else {
print("No record of (nameToCheck).")
}
</pre>

   對(duì)于自定義遵守Equatable協(xié)議的類型弊仪,必須要實(shí)現(xiàn) ”==“ 作為類型的靜態(tài)方法熙卡,而對(duì)于 ”!=“ 標(biāo)準(zhǔn)庫(kù)已經(jīng)提供了默認(rèn)的方法
   另外還需要符合三個(gè)規(guī)則:

1.自反性 a == a
2.對(duì)稱性 a == b 等同 b == a
3.傳遞性 a == bb == c 推出 a == c

一個(gè)自定義類型簡(jiǎn)單的例子
<pre>
struct StreetAddress {
let number: String ///門牌號(hào)
let street: String ///街道
let unit: String? ///樓棟單元

init(_ number: String, _ street: String, unit: String? = nil) {
    self.number = number
    self.street = street
    self.unit = unit
}

}
//StreetAddress遵守Equatable協(xié)議
extension StreetAddress: Equatable {

//必須要實(shí)現(xiàn)的靜態(tài)方法 “==”
static func == (lhs: StreetAddress, rhs: StreetAddress) -> Bool {
    return
        (lhs.number == rhs.number &&
        lhs.street == rhs.street &&
        lhs.unit == rhs.unit)
}

}

let addresses = [StreetAddress("1490", "Grove Street"),
StreetAddress("2119", "Maple Avenue"),
StreetAddress("1400", "16th Street")]

let home = StreetAddress("1400", "16th Street")

print(addresses[0] == home)

print(addresses.contains(home))
</pre>

   一個(gè)類實(shí)例的標(biāo)識(shí)不是實(shí)例的值的一部分杖刷,也就是說(shuō)判斷兩個(gè)實(shí)例的值是否相等,類型是不作為判斷依據(jù)的驳癌,換包話說(shuō) ‘==’, 不判斷類型滑燃,如果要參與類型的判斷,那么就要使用 ‘===’

有不實(shí)之外颓鲜,望指正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末表窘,一起剝皮案震驚了整個(gè)濱河市典予,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乐严,老刑警劉巖瘤袖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異昂验,居然都是意外死亡捂敌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門既琴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)占婉,“玉大人,你說(shuō)我怎么就攤上這事甫恩∧婕茫” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵磺箕,是天一觀的道長(zhǎng)奖慌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)松靡,這世上最難降的妖魔是什么升薯? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮击困,結(jié)果婚禮上涎劈,老公的妹妹穿的比我還像新娘。我一直安慰自己阅茶,他們只是感情好蛛枚,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脸哀,像睡著了一般蹦浦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撞蜂,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天盲镶,我揣著相機(jī)與錄音,去河邊找鬼蝌诡。 笑死溉贿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浦旱。 我是一名探鬼主播宇色,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宣蠕?” 一聲冷哼從身側(cè)響起例隆,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抢蚀,沒(méi)想到半個(gè)月后镀层,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皿曲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年鹿响,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谷饿。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惶我,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出博投,到底是詐尸還是另有隱情绸贡,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布毅哗,位于F島的核電站听怕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏虑绵。R本人自食惡果不足惜尿瞭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翅睛。 院中可真熱鬧声搁,春花似錦、人聲如沸捕发。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扎酷。三九已至檐涝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間法挨,已是汗流浹背谁榜。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凡纳,地道東北人窃植。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惫企,于是被迫代替她去往敵國(guó)和親撕瞧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,327評(píng)論 25 707
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,823評(píng)論 1 10
  • 136.泛型 泛型代碼讓你可以寫出靈活,可重用的函數(shù)和類型,它們可以使用任何類型,受你定義的需求的約束狞尔。你可以寫出...
    無(wú)灃閱讀 1,480評(píng)論 0 4
  • 最近"戰(zhàn)狼2"大火丛版,這部電影讓投資方狠狠賺了一把,大小網(wǎng)站平臺(tái)都在推送相關(guān)票房飆升的信息偏序,關(guān)于吳京的信息林...
    有君如玉閱讀 211評(píng)論 0 1
  • 有一天晚上页畦,某宿舍六個(gè)人都在玩游戲,打的正激烈的時(shí)候研儒,突然豫缨,小明站起來(lái)不冷不熱地說(shuō)了一句:"啊哈,今天是我的大洗之...
    涼城已落寂閱讀 348評(píng)論 0 0