高階函數(shù)介紹

1.map函數(shù)

(Return an Array containing the results of mapping transform)map函數(shù)對數(shù)組元素進行某種規(guī)則的轉(zhuǎn)換并返回一個新的數(shù)組

let arr = [1,2,4,5]
let brr = arr.map {
    "No."+String($0)    將元素轉(zhuǎn)換為字符串并拼接No.
    //$0+1     //將所有元素都加1
}
brr------>["No.1", "No.2", "No.4", "No.5"]

2.flatMap函數(shù)

flatMap函數(shù)有兩種重載形式菩混。這兩個重載的函數(shù)都是接受一個閉包作為參數(shù)阵谚,返回一個數(shù)組担钮。

public func flatMap<S : SequenceType>(transform: (Self.Generator.Element) throws -> S) rethrows -> [S.Generator.Element]
(Self.Generator.Element) -> S提陶,并且這里 S 被定義成:S : SequenceType呼畸。所以它是接受數(shù)組元素让腹,然后輸出一個 SequenceType 類型的元素的閉包
let arr1 = [[1,2,3],[6,5,4]]
let frr = arr1.flatMap {$0}     --->[1, 2, 3, 6, 5, 4]
let grr = Array(arr1.map { $0 }.flatten())   ---->[1, 2, 3, 6, 5, 4]
public func flatMap<T>(@noescape transform: (Self.Generator.Element) throws -> T?) rethrows -> [T]
 flatMap 最終輸出的數(shù)組結(jié)果焦读,其實不是這個 T? 類型仓蛆,而是這個 T? 類型解包之后,不為 .None 的元數(shù)數(shù)組:[T]
Return an `Array` containing the non-nil results of mapping 返回一個沒有nil的map過的數(shù)組
let arr2:[Int?] = [1,2,nil,4,nil,5]
let hrr = arr2.flatMap {
    $0
}
hrr   ----->  [1, 2, 4, 5]
flatMap 將數(shù)組中nil都丟棄了蝌诡。只保留非空的值

3.reduce函數(shù)

來對數(shù)組元素進行某種規(guī)則的求和(不一定是加和)
Return the result of repeatedly calling combine with an
accumulated value initialized to initial and each element of self, in turn

public func reduce<T>(initial: T, @noescape combine: (T, Self.Generator.Element) throws -> T) rethrows -> T
initial:初始化的值溉贿,combine方法
let crr = arr.reduce(0) { (pre:Int, element:Int) -> Int in
    return pre+element
}
上例中initial=0,也就是從0開始用某種規(guī)則求和。
pre表示:之前求和的結(jié)果  ---> 一開始是0
element:表示即將進入運算的數(shù)組中的元素 ---->第一個是 1
pre+element:表示求和的規(guī)則    ---->閉包里面的規(guī)則自己定義

其他規(guī)則的求和

let drr = arr.reduce("") {
    if $0 == ""{
        return String($1)
    }else{
        return $0+" "+String($1)
    }
}
drr     ------>    "1 2 4 5"

4.filter函數(shù)

返回符合條件的元素的數(shù)組

 public func filter(@noescape includeElement: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.Generator.Element]

let err = arr.filter { (num:Int) -> Bool in
    num%2==0   //需要符合的條件浦旱。
}
err  -----> [2, 4]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顽照,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闽寡,更是在濱河造成了極大的恐慌代兵,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爷狈,死亡現(xiàn)場離奇詭異植影,居然都是意外死亡,警方通過查閱死者的電腦和手機涎永,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門思币,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羡微,你說我怎么就攤上這事谷饿。” “怎么了妈倔?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵博投,是天一觀的道長。 經(jīng)常有香客問我盯蝴,道長毅哗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任捧挺,我火速辦了婚禮虑绵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闽烙。我一直安慰自己翅睛,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布黑竞。 她就那樣靜靜地躺著捕发,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摊溶。 梳的紋絲不亂的頭發(fā)上爬骤,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音莫换,去河邊找鬼霞玄。 笑死骤铃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的坷剧。 我是一名探鬼主播惰爬,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惫企!你這毒婦竟也來了撕瞧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狞尔,失蹤者是張志新(化名)和其女友劉穎丛版,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年兰粉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫缨。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖端朵,靈堂內(nèi)的尸體忽然破棺而出好芭,到底是詐尸還是另有隱情,我是刑警寧澤冲呢,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布舍败,位于F島的核電站,受9級特大地震影響碗硬,放射性物質(zhì)發(fā)生泄漏瓤湘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一恩尾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挽懦,春花似錦翰意、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渔嚷,卻和暖如春进鸠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背形病。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工客年, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霞幅,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓量瓜,卻偏偏與公主長得像司恳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绍傲,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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