Swift學習3 函式和閉包

2021-07-25 04:53:36 字數 1836 閱讀 8473

1,函式的返回值可以是元組

2,函式的引數可以有預設值

3,輸入輸出引數 用&,可以進行位址傳遞

4,函式型別 可以模擬函式指標,可以作為引數,也可以作為返回值:

func stepforward(input: int) -> int

func stepbackward(input: int) -> int

func choosestepfunction(backwards: bool) -> (int) -> int

let f = choosestepfunction(backwards:false)

print(「(f(1))」)

5,巢狀函式–定義在其他函式內部的函式

閉包採取如下三種形式之一:

a.全域性函式是乙個有名字但不會捕獲任何值的閉包

b.巢狀函式是乙個有名字並可以捕獲其封閉函式域內值的閉包

c.閉包表示式是乙個利用輕量級語法所寫的可以捕獲其上下文中變數或常量值的沒有名字的閉包

1,閉包表示式語法有如下一般形式:

使用舉例:

let names = [「chris」, 「alex」, 「ewa」, 「barry」, 「daniella」]

func backwards(s1: string, s2: string) -> bool

var reversed = names.sorted(by: backwards)

print(reversed) // print: ewa daniella chris barry alex

2,將閉包寫在呼叫語句中:

var reversed = names.sorted(by: )

3,根據上下文推斷型別--因為排序閉包是作為函式的引數進行傳入的,swift可以推斷其引數和返回值的型別

var reversed = names.sorted(by: )

4,可以隱藏掉return

var reversed = names.sorted(by: )

5,引數名簡寫--使用引數名簡寫,可以省略引數名的定義和in關鍵字

var reversed = names.sorted(by: )

6,運算子函式

var reversed = names.sorted(by: >)

let digitnames = [

0: 「zero」, 1: 「one」, 2: 「two」, 3: 「three」, 4: 「four」,

5: 「five」, 6: 「six」, 7: 「seven」, 8: 「eight」, 9: 「nine」

] let numbers = [16, 58, 510]

let strings = numbers.map  while number > 0

return output

}// strings is inferred to be of type [string]

// its value is ["onesix", "fiveeight", "fiveonezero"]

待研究

runningtotal和amount**獲

func makeincrementer(forincrement amount: int) -> () -> int

return incrementer

} let incrementbyten = makeincrementer(forincrement: 10)

incrementbyten() // 10

incrementbyten() // 20

Swift學習筆記 函式和閉包(1)

函式是swift的重要組成單位,乙個swift程式可以包含很多函式 函式定義和呼叫 定義乙個函式,宣告2個形參,返回int型別 func max x int y int int 宣告乙個函式,宣告乙個形參,返回string型別 func sayhi name string string var a ...

Swift學習筆記 函式和閉包(2)

1.函式型別 定義乙個變數 int,int int var myfun int int int 定義乙個變數 string void var test string void 計算乙個乘方的函式 func pow base int,exponent int int return result 將po...

Swift基礎(八)函式和閉包

override func viewdidload print arr 執行結果 3,4 3 種閉包簡寫方法 1.省略 引數型別和括號 var arr getlist 1,2,3,4 pre 2.省略 引數型別和括號,return關鍵字 arr getlist 1,2,3,4 pre s in s ...