函式function,如需要多次使用,可將方法寫成函示重複使用!
基本function
func 函式名稱(){ 執行程式}
基本function函式型別
這邊宣告函式常數時沒有標註型別,因為就如同其他變數或常數宣告時,Swift 會根據指派的函式自動判斷出型別。
// 定義函式 有一個型別為 Int 的參數以及一個型別為 Int 的返回值
// 函式的功能是將帶入的參數加十 並返回
func addTen(number: Int) -> Int {
let n = number + 10
// 使用 return 來返回值 這個返回值的型別要與上面標註的相同
return n
}
// 呼叫函式 傳入整數 12 會返回 22
let newNumber = addTen(12)
// 印出:22
print(newNumber)
參數function
- 一個參數
func bookName(name:String){ //執行程式 print('這本書是 \(name)')}bookName("哈哈你好"))
//這本書是 哈哈你好
- 多個參數
func bookName(name:String , age: Int){ //執行程式
print('這是本書是\(name)適合\(age)歲小孩')}bookName("小飛象", age:10)
//第二個參數需要標註對應的名稱func bookName(name:String , _age: Int){//執行程式
print('這是本書是\(name)適合\(age)歲小孩')}bookName("小飛象", 10)
//加上下底線,第二個參數就不須標註名稱
- 外部參數/內部參數
func hello(name n: String, age a: Int) {
// n 跟 a 為內部參數名稱 在函式內部使用
print("\(n) is \(a) years old .")
}
// name 跟 age 為外部參數名稱 呼叫函式時要標註在參數之前
hello(name: "Jack", age: 25)
- 預設參數
建議把預設值的參數都放在後面,方便閱讀
func someFunction(number: Int = 12) {
print(number)
}
// 印出:6
someFunction(6)
// 沒有傳入值 則會使用預設值 印出:12
someFunction()
- 可變量參數
只能有一個變量參數,若有變量參數放在預設的後面
func arithmeticMean(numbers: Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
arithmeticMean(1, 2, 3, 4, 5) // 返回 3.0
arithmeticMean(3, 8, 19) // 返回 10.0
- 輸入輸出參數
如果想要一個可以修改參數的函式,並在呼叫函式結束後,這個修改仍然存在,則必須將參數設定為輸入輸出參數(In-Out Parameters)。
- 定義函式時,在參數名稱前加上
inout
。此參數不能有預設值,也不能再設為可變數量參數。 - 當呼叫函式,傳入的參數作為輸入輸出參數時,需要在參數前加上
&
。這個參數只能是一個變數,不能是常數、字面量(單純的數值或字串)。
以下是個例子:
// 定義一個[輸入輸出參數]的函式 參數前要加上 inout
func newNumber(inout number: Int) {
number *= 2
}var n = 10
print(n) // 這時 n 為 10// 傳入的參數在函式結束後 改變仍然存在
newNumber(&n)print(n) // 所以這時再印出 就會是 20