over 6 years ago

宣告

帶有參數與回傳值

func myFunc(para: String) -> String {
    return "ok"
}

無參數

func myFunc() -> String {
    return "ok"
}

多個參數

func myFunc(para: String, para2: Int) -> String {
    return "ok"
}

無回傳值

func myFunc(para: String) {
}

利用 tuple,多個回傳值

func myFunc() -> (value: Int, value2: Int) {
    return (2,3)
}

參數命名

以下的宣告方法,在外部呼叫 function 與 function 內部使用的參數名稱都相同。

func myFunc(para: String) {
    print(para)
}
myFunc(para:"abc")

在外部呼叫時使用別的參數名稱。

func myFunc(myPara para: String) {
    print(para)
}
myFunc(myPara:"abc")

在外部呼叫時不使用參數名稱。

func myFunc(_ para: String) {
    print(para)
}
myFunc("abc")

預設參數

若在宣告 function 時,設定參數預設值,呼叫時可以不需要帶入參數。

func myFunc(para: Int = 12) {
}
myFunc()

多值參數

宣告 function 的參數時,可以在單一參數內帶入多個相同型別的值,
內部會使用 array 的方法來處理。

func myFunc(_ para: Int) {
    for num in para {
        num
    }
}
myFunc(1,2,3,4,5)

改動參數

Function 的參數預設是無法被改變,如果有需要更動的話,可以在宣告時定義 inout,
帶入的參數必須是變數,使用 & 符號帶入。

func myFunc(para: inout Int) {
    para = 12
}
var num = 0
myFunc(para:&num)

型別

將變數或常數的型別使用 function 型別宣告。

func myFunc(para: Int) -> Int {
    return 1
}
let vFunc: (Int)->Int = myFunc
vFunc(123)

將 function 型別當作參數型別。

func testFunc(para: Int) -> Int {
    return para
}
func myFunc(para: (Int)->Int, _ para2: Int) -> Int {
    return para(para2)
}
myFunc(para:testFunc, 123)

將 function 型別當作回傳值型別。

func testFunc(para: Int) -> Int {
    return para
}
func myFunc() -> (Int) -> Int {
    return testFunc
}
let result = myFunc()
result(123)

Function 內定義 function

func myFunc() -> (Int) -> Int {
    func testFunc(para: Int) -> Int {
        return para
    }
    return testFunc
}
let result = myFunc()
result(123)
← iOS Swift : Control Flow iOS Swift : Closures →