Swift語法 高階函式

2021-08-11 14:48:18 字數 1922 閱讀 4204

高階函式map,flatmap,reduce,filter可以簡化**量, 能用就用。

1、 map函式, 是集合和string類的例項方法, 作用是遍歷時修改item;map並不會修改例項值, 而且新建乙個拷貝。

摘自官方文件:

let cast = ["vivien", "marlon", "kim", "karl"]

let lowercasenames = cast.map

// 'lowercasenames' == ["vivien", "marlon", "kim", "karl"]

let lettercounts = cast.map

// 'lettercounts' == [6, 6, 3, 4]

再舉2個例子說明:

1、將int陣列轉換為string陣列, 即map支援轉換陣列引數型別;

2、偶數乘以10,測試遍歷時新增自定義邏輯;

let array = [1, 2, 3]

let str1 = array.map() //陣列每個元素轉成string型別

let str2 = array.map else

}print(array) //[1 2 3]

print(str1) //[「$1","$2","$3"]

print(str2) //[1,20,3]

2、flatmap, 功能跟map類似; 區別是flatmap會過濾nil元素, 並解包optional。

示例:

arr1包含5個值, arr4包含4個值。

flatmap還可以將多維陣列轉換為一維陣列;

對於n維陣列, map函式仍然返回n維陣列。

ps: arr陣列裡包含3個元素, map迴圈了4次。

3、 filter函式, 顧名思義就是過濾出符合條件的元素。

4、reduce函式, 它可以使用2個引數即$0和$1, 而前3個函式只能使用乙個引數$0。

reduce可以實現求和, 或篩選出符合條件記錄計算總和。

高階函式還可以鏈式使用(多級):

let array = [1, 2, 3, 4, 5]

let sum0 = array.filter.reduce(0, +)

print(sum0) //12

求陣列裡大於2的值之和。

組合呼叫:

找出二維陣列中所有的偶數。

let array = [[1,2,3], [4,5,6], [7,8,9] ]

let even = array.flatmap

}print(even) //[2,4,6,8]

如果使用基本二維陣列遍歷的語法就比較麻煩了:

//基本的二維陣列遍歷

var evenarr = [int]()

for arr in array

}}print(evenarr)

Swift語法11 函式

func 函式名 引數列表 返回值型別 1.沒有引數,沒用返回值 func about void 呼叫函式 about 簡單寫法 如果沒用返回值,void可以寫成 func about1 如果沒有返回值,後面的內容可以都不寫 func about2 about2 2.有引數,沒用返回值 func c...

swift 函式語法 格式

import uikit swift中函式的格式如下 func 函式名 引數列表 返回值型別 func 是關鍵字,多個引數列表之間使用逗號隔開,也可以沒有引數 使用箭頭 指向返回值型別 如果函式沒有返回值,返回值為void,並且 可以省略 1沒有引數沒有返回值的方法 func about1 void...

Python高階語法 函式

所謂函式就是乙個 塊,函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。二.匿名函式 三.map函式 四.reduce函式 五.filter函式 六.sort函式 七.幾種函式的舉例 def 函式名 引數 函式體 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數 傳的...