[swift 進(jìn)階]讀書(shū)筆記-集合類型協(xié)議 C3P5_專門的集合類型

集合類型協(xié)議

3.5專門的集合類型:Special Collection

對(duì)于collection來(lái)說(shuō),有兩個(gè)有意思的限制
1.無(wú)法將索引后退移動(dòng)捆蜀。
2.沒(méi)有提供插入攻臀,移動(dòng),替換元素的功能盗扒。
雖然只是有一部分集合可以使用他們跪楞,但作為標(biāo)準(zhǔn)庫(kù)。就只寫(xiě)一些通用的方法侣灶。

在標(biāo)準(zhǔn)庫(kù)中有四個(gè)針對(duì)于collection 補(bǔ)充的協(xié)議

    //一個(gè)既可以前向又可以后向遍歷的集合
    BidirectionalCollection
    //一個(gè)可以高效隨機(jī)存取索引遍歷的集合
    RandomAccessCollection
    //一個(gè)可以下標(biāo)賦值的集合
    MutableCollection
    //一個(gè)可以將任意子范圍的元素用別的集合中的元素進(jìn)行替換的集合
    RangeReplaceableCollection

BidirectionalCollection:

sufix甸祭, removeLastreversed 就是由它來(lái)提供。是不是很熟悉

RandomAccessCollection

和BidirectionalCollection index(_:offsetBy:)```` 去通過(guò)漸進(jìn)的方式去遍歷, 相比 RandomAccessCollection 可以直接在兩個(gè)索引之間``來(lái)移動(dòng)褥影。
例如計(jì)算 startIndex 和 endIndex 的間距池户。 RandomAccessCollection可以在常數(shù)時(shí)間內(nèi)計(jì)算出count 而其他就會(huì)慢很多。

MutableCollection

支持原地的元素更改凡怎。
只能改變集合的元素值校焦,無(wú)法改變集合的長(zhǎng)度元素的順序
MutableCollection 只多了一個(gè)required func:
subscript 而且要必須提供一個(gè) setter

    ///協(xié)議方法
    public subscript(position: Self.Index) -> Self.Element { get set }



public subscript(position: Element) -> Element {
 get {
return Element 
} 
set {
//必須要提供
}
}

注:編譯器不會(huì)讓我們向一個(gè)已經(jīng)存在的Collection通過(guò)擴(kuò)展添加下標(biāo)的setter方法 原因有二:
1.要提供setter就要提供getter
2.無(wú)法重新定義已存在的getter方法
所以我們只能重新寫(xiě)一個(gè)協(xié)議去替換collection 所以要重新去寫(xiě)getter setter方法统倒。

知識(shí)點(diǎn)1:Array Dict Set 中只有Array滿足這個(gè)協(xié)議寨典。

RangeReplaceableCollection

需要添加或者移除元素可以用這個(gè)協(xié)議
有兩個(gè)要求:
1.一個(gè)空的初始化方法(在泛型函數(shù)中很好用,因?yàn)榉盒驮试S一個(gè)函數(shù)創(chuàng)建相同類型的 新的空集合)
2.replaceSubrange(_:with:)方法 參數(shù)為范圍和要替換的集合房匆。

組合能力

我們可以將上面這些特殊的集合協(xié)議``組合起來(lái)```耸成,來(lái)達(dá)到我們想要的效果。

本章回顧

集合類型主要是由 SequenceCollection 協(xié)議構(gòu)成了

TODO 內(nèi)容知識(shí)點(diǎn)后期可以更生動(dòng)形象的寫(xiě)出來(lái)

文章源文件地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浴鸿,一起剝皮案震驚了整個(gè)濱河市井氢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赚楚,老刑警劉巖毙沾,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宠页,居然都是意外死亡左胞,警方通過(guò)查閱死者的電腦和手機(jī)寇仓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烤宙,“玉大人遍烦,你說(shuō)我怎么就攤上這事√烧恚” “怎么了服猪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拐云。 經(jīng)常有香客問(wèn)我罢猪,道長(zhǎng),這世上最難降的妖魔是什么叉瘩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任膳帕,我火速辦了婚禮,結(jié)果婚禮上薇缅,老公的妹妹穿的比我還像新娘危彩。我一直安慰自己,他們只是感情好泳桦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布汤徽。 她就那樣靜靜地躺著,像睡著了一般灸撰。 火紅的嫁衣襯著肌膚如雪谒府。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天浮毯,我揣著相機(jī)與錄音狱掂,去河邊找鬼。 笑死亲轨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸟顺。 我是一名探鬼主播惦蚊,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讯嫂!你這毒婦竟也來(lái)了蹦锋?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤欧芽,失蹤者是張志新(化名)和其女友劉穎莉掂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體千扔,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡憎妙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年库正,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厘唾。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褥符,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抚垃,到底是詐尸還是另有隱情喷楣,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布鹤树,位于F島的核電站铣焊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏罕伯。R本人自食惡果不足惜曲伊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捣炬。 院中可真熱鬧熊昌,春花似錦、人聲如沸湿酸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)推溃。三九已至昂利,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铁坎,已是汗流浹背蜂奸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硬萍,地道東北人扩所。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像朴乖,于是被迫代替她去往敵國(guó)和親祖屏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360