函數(shù)
函數(shù)是一段完成特定任務(wù)的獨(dú)立代碼片段。你可以通過(guò)給函數(shù)命名來(lái)標(biāo)識(shí)某個(gè)函數(shù)的功能,這個(gè)名字可以被用來(lái)在需要的時(shí)候"調(diào)用"這個(gè)函數(shù)來(lái)完成它的任務(wù)。
Swift 統(tǒng)一的函數(shù)語(yǔ)法非常的靈活,可以用來(lái)表示任何函數(shù),包括從最簡(jiǎn)單的沒有參數(shù)名字的 C 風(fēng)格函數(shù),到復(fù)雜的帶局部和外部參數(shù)名的 Objective-C 風(fēng)格函數(shù)。參數(shù)可以提供默認(rèn)值,以簡(jiǎn)化函數(shù)調(diào)用。參數(shù)也可以既當(dāng)做傳入?yún)?shù),也當(dāng)做傳出參數(shù),也就是說(shuō),一旦函數(shù)執(zhí)行結(jié)束,傳入的參數(shù)值將被修改。
當(dāng)你定義一個(gè)函數(shù)時(shí),你可以定義一個(gè)或多個(gè)有名字和類型的值,作為函數(shù)的輸入,稱為參數(shù),也可以定義某種類型的值作為函數(shù)執(zhí)行結(jié)束時(shí)的輸出,稱為返回類型。
每個(gè)函數(shù)有個(gè)函數(shù)名,用來(lái)描述函數(shù)執(zhí)行的任務(wù)。要使用一個(gè)函數(shù)時(shí),用函數(shù)名來(lái)“調(diào)用”這個(gè)函數(shù),并傳給它匹配的輸入值(稱作 實(shí)參 )。函數(shù)的實(shí)參必須與函數(shù)參數(shù)表里參數(shù)的順序一致。
下面是幾種函數(shù)類型的形式
//無(wú)參無(wú)返回值
func introduceMyself(){
print("My name is 不在線,I'm pleased to meet you")
}
introduceMyself()
//有參無(wú)返回值
func learnSwift(name : String){
print("\(name) learn Swift now")
}
learnSwift(name: "不在線")
//有參數(shù)有返回值
func toGreet(person : String) -> (String){
return person + " Hello"
}
toGreet(person: "ZhangSan ")
//多參,有一個(gè)返回值
func calculationAddition(a:Int , b:Int) -> (Int)
{
return a+b
}
calculationAddition(a: 3, b: 4)
//多參,多返回值
func calculationMethod(a:Int , b:Int) -> (Int,Int)
{
return (a/b, a*b)
}
calculationMethod(a: 8, b: 4)
函數(shù)標(biāo)簽
解析:每個(gè)函數(shù)參數(shù)都有一個(gè)參數(shù)標(biāo)簽( argument label)以及一個(gè)參數(shù)名稱( parameter name)。參數(shù)標(biāo)簽在調(diào)用函 數(shù)的時(shí)候使用;調(diào)用的時(shí)候需要將函數(shù)的參數(shù)標(biāo)簽寫在對(duì)應(yīng)的參數(shù)前面。參數(shù)名稱在函數(shù)的實(shí)現(xiàn)中使用。默認(rèn)情況下,函數(shù)參數(shù)使用參數(shù)名稱來(lái)作為它們的參數(shù)標(biāo)簽(上面的方法都是默認(rèn)使用參數(shù)名稱來(lái)作為它們的參數(shù)標(biāo)簽)。
//函數(shù)標(biāo)簽
func addTwoInts(fristNum a: Int, secondNum b: Int) -> Int {
// 在函數(shù)體內(nèi), fristNum和secondNum是參數(shù)標(biāo)簽 ,a和b是參數(shù)名稱,Int參數(shù)類型
return a + b
}
addTwoInts(fristNum: 1, secondNum: 2)
如果你不希望為某個(gè)參數(shù)添加一個(gè)標(biāo)簽,可以使用一個(gè)下劃線( _)來(lái)代替一個(gè)明確的參數(shù)標(biāo)簽。
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
// 在函數(shù)體內(nèi),firstParameterName 和 secondParameterName代表參數(shù)中的第一個(gè)和第二個(gè)參數(shù)值
}
someFunction(1, secondParameterName: 2)
如果一個(gè)參數(shù)有一個(gè)標(biāo)簽,那么在調(diào)用的時(shí)候必須使用標(biāo)簽來(lái)標(biāo)記這個(gè)參數(shù),第二個(gè)參數(shù)是默認(rèn)用參數(shù)名稱來(lái)作為它的參數(shù)標(biāo)簽