函數(shù)是一段代碼和一個(gè)會(huì)意的名字坯钦,用于執(zhí)行特定的任務(wù)
使用函數(shù)叫“調(diào)用(call)”
就像公式一樣,使用函數(shù)需要提供參數(shù)
函數(shù)調(diào)用的結(jié)果叫返回值
函數(shù)都有類型,包含參數(shù)和返回值類型漏健。
定義函數(shù):
形式:func函數(shù)名(參數(shù)1:類型,參數(shù)2:類型橘霎,...) -> 返回結(jié)果的類型 {執(zhí)行語句 return 返回值}
調(diào)用: var 變量名稱 = 函數(shù)名(變量1蔫浆,變量2,...)
內(nèi)部參數(shù)名姐叁,外部參數(shù)名
//簡單示例:
//1.1
func add (a:Int, b : Int) -> Int {
return a + b
}
var sum = add(a: 3, b: 4) // 7
//1.2
//使用_可以省略外部參數(shù)名
func add1 (_ a:Int,_ b : Int) -> Int {
return a + b
}
add1(1, 2)
//2.1
func sayHello(name:String) -> String {
return "Hello" + name
}
sayHello(name: " xiaobo")
//2.2
//一般第一個(gè)參數(shù)的外部參數(shù)名包含在函數(shù)名中瓦盛,WithGreetingWord為外部參數(shù)名,greeting為內(nèi)部參數(shù)名外潜,會(huì)顯示使用外部參數(shù)名
func sayHello1(name:String, WithGreetingWord greeting:String) -> String {
return "\(greeting),\(name)原环!"
}
sayHello1(name: "xiaobo", WithGreetingWord: "Hi") //Hi,xiaobo!
//3.1
//無參數(shù)無返回值处窥,一般用于執(zhí)行一系列的操作嘱吗,不需要結(jié)果
func welcome() {
print("歡迎光臨")
}
welcome()
//多返回值(使用元組)
func maxMin() -> (Int,Int) {
return (Int.min,Int.max)
}
maxMin().0
maxMin().1
//參數(shù)以 名稱:類型 列出,多個(gè)參數(shù)間用逗號分隔
func add1(x:Int, y:Int, z:Int) -> Int {
return x + y + z
}
add1(x: 1, y: 2, z: 3)
//可以給某個(gè)參數(shù)以默認(rèn)值
func add2(x:Int, increment:Int = 2) -> Int {
return x + increment;
}
add2(x: 3)
函數(shù)類型: 包含參數(shù)和返回類型的簡寫形式滔驾,可以像普通變量那樣使用谒麦,一般用于函數(shù)式編程,比如:
(Int,Int) -> Int
func calculate(x:Int , y:Int , method:(Int,Int) -> Int) -> Int {
return method(x,y)
}
func add3(x:Int ,y:Int) -> Int {
return x + y
}
func multiply(x:Int,y:Int) -> Int {
return x * y
}
calculate(x: 3, y: 4, method: add3(x:y:))
calculate(x: 3, y: 4, method: add3)
calculate(x: 5, y: 6, method: multiply)
可變參數(shù):可變參數(shù)可以接受零個(gè)或多個(gè)值嵌灰。函數(shù)調(diào)用時(shí)弄匕,你可以用可變參數(shù)來指定函數(shù)參數(shù),其數(shù)量是不確定的沽瞭。
import Cocoa
func vari<N>(members: N...){
for i in members {
print(i)
}
}
vari(members: 4,3,5)
vari(members: 4.5, 3.1, 5.6)
vari(members: "Google", "Baidu", "Runoob")