function也是一種型別,由參數型別及回傳值型別所組成:
func doSomthing(a: String, b: Int) -> String{ 內部程式 }
上面的 function 標示 ( String, Int ) -> String,,就是只有兩個分別為 String型別及 Int 型別的參數,然後回傳一個型別為 String 的值。
func didSomthing(){ 內部程式 }
這個 function 也可以標註為 ( ) -> ( )。實際上沒有回傳值的 function,會回傳一個值,叫 Void。
使用 function 類型
剛剛在前面提過 function 是一種型別,所以可以變數或常數宣告成為一個函式,然後可以指派給一個適當的 function。
上面的例子可以這樣讀:一個叫做 mathFunction 的變數,他能一次接受兩個 Int 型別並回傳一個 Int 值,將這個新的變數指向 addTwo
現在我們可以利用 mathFunction 來調用函數
因為 mathFunction 是變數,所以不同 function 有相同型別、回傳值型別,就可以改變新的變數指向
使用 function作為參數類型
我們可以利用 function 的類型作為其他 function 的參數類型,這可以讓我們將 printMathResult 的一部份的操作交給呼叫 function的人來做
function 型別作為回傳型別
function 可以作為另一個 function 的回傳:
Nested Function
目前為止所使用的 function 都是全域函數 ( Global Function ),定義在全區域中,在什麼地方都可以使用。而將一個 function 包在另一個 function中,則叫做巢狀函數 ( Nested Function ),被包在裡面的函式只能在裡面使用,也可以回傳給其他地方使用。