swift-函數(shù)

函數(shù)也可以作為一個類型(引用類型)
func add (_ a: Int, _ b: Int) -> Int
{
    return a + b
}

let anotherAdd = add  // let anotherAdd: (Int, Int) -> Int = add 等同于诫咱, 這里的 add 函數(shù)作為一個類型
anotherAdd(2, 4)


`_` 表示忽略參數(shù)名  `= 99999, =1000` 表示默認(rèn)值
func add(_ num1: Int = 99999, _ num2: Int = 1000) -> Int
{
    return num1 + num2
}

add(2, 3)

add(2)

// 這里調(diào)用 是因為有默認(rèn)參數(shù)
add()


// 這里的 `and` 是外部參數(shù)名
func add(_ num1: Int = 99999, _ num2: Int = 1000,  and num3: Int) -> Int
{
    return num1 + num2 + num3
}

add(and: 3)

add(2, 3, and: 4)

變長的參數(shù)類型
一個函數(shù)最多只有一個變長的參數(shù)類型

func mean (_ numbers: Int ...) -> Int
{
    var sumValue = 0
    
    for num in numbers {
        
        sumValue += num
    }
    
    return sumValue
}

// 這里可以傳入多個值
mean(2, 4, 6, 8, 10)

交換2個數(shù)的值
inout 代表傳入地址, 加上這個關(guān)鍵字后可以改變出入的參數(shù)值

func swapValues (_ num1: inout Int, _ num2: inout Int)
{
    let temp: Int = num1

    num1 = num2

    num2 = temp
}

var X: Int = 100, Y: Int = 200

swapValues(&X, &Y)

X
Y

參數(shù)是函數(shù)


func calculate(scores: inout [Int] , changeValue: (Int) -> Int) {
    
    for (index, score) in scores.enumerated() {
        
        scores[index] = changeValue(score);
    }
    print(scores)
}

func changeValue(value: Int) -> Int {
    
    return value * 10
}

var score: [Int] = [1, 2, 3, 4, 5]

// 調(diào)用
calculate(scores: &score, changeValue: changeValue)

執(zhí)行結(jié)果:[10, 20, 30, 40, 50]

高階函數(shù)

高階函數(shù)map、flatMap罕扎、filter辐棒、reduce

map: 可以對數(shù)組中的每一個元素做一次處理\
let scores = [40, 89, 100, 78, 97, 50]
func isPass (score: Int) -> Bool
{
    return score < 60
}

scores.map(isPass) // [true, false, false, false, false]
filer:過濾狭归,可以對數(shù)組中的元素按照某種規(guī)則進行一次過濾

let scores = [40, 89, 100, 78, 97, 50]
func isPass (score: Int) -> Bool
{
    return score < 60
}

scores.filter(isPass)  // [40, 50]
reduce:計算梗醇,可以對數(shù)組的元素進行計算

func joint (string: String, num: Int) -> String
{
    return string + String(num) + ","
}

scores.reduce("", joint) // 40,89,100,78,97,50,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佛掖,一起剝皮案震驚了整個濱河市贴捡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌法严,老刑警劉巖损敷,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異深啤,居然都是意外死亡拗馒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門溯街,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘟忱,“玉大人,你說我怎么就攤上這事苫幢。” “怎么了垫挨?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵韩肝,是天一觀的道長。 經(jīng)常有香客問我九榔,道長哀峻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任哲泊,我火速辦了婚禮剩蟀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘切威。我一直安慰自己育特,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布先朦。 她就那樣靜靜地躺著缰冤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喳魏。 梳的紋絲不亂的頭發(fā)上棉浸,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音刺彩,去河邊找鬼迷郑。 笑死枝恋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗡害。 我是一名探鬼主播焚碌,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼就漾!你這毒婦竟也來了呐能?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抑堡,失蹤者是張志新(化名)和其女友劉穎摆出,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體首妖,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡偎漫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了有缆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片象踊。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棚壁,靈堂內(nèi)的尸體忽然破棺而出杯矩,到底是詐尸還是另有隱情,我是刑警寧澤袖外,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布史隆,位于F島的核電站,受9級特大地震影響曼验,放射性物質(zhì)發(fā)生泄漏泌射。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一鬓照、第九天 我趴在偏房一處隱蔽的房頂上張望熔酷。 院中可真熱鬧,春花似錦豺裆、人聲如沸拒秘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翼抠。三九已至,卻和暖如春获讳,著一層夾襖步出監(jiān)牢的瞬間阴颖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工丐膝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留量愧,地道東北人钾菊。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像偎肃,于是被迫代替她去往敵國和親煞烫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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