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)