swift函數(shù)中經(jīng)常可以看到_,比如AppDelegate中的入口函數(shù)
初看時(shí)讓我很費(fèi)解,馬上就去查閱了文檔薄湿,原來這里牽涉到函數(shù)參數(shù)標(biāo)簽的概念徽职,_為忽略參數(shù)標(biāo)簽象颖。
文檔摘錄如下:
函數(shù)參數(shù)標(biāo)簽和參數(shù)名稱
每個(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)簽寫在對應(yīng)的參數(shù)前面姆钉。參數(shù)名稱在函數(shù)的實(shí)現(xiàn)中使用说订。默認(rèn)情
況下,函數(shù)參數(shù)使用參數(shù)名稱來作為它們的參數(shù)標(biāo)簽。
func someFunction(firstParameterName: Int, secondParameterName: Int) {
// 在函數(shù)體內(nèi),firstParameterName 和 secondParameterName 代表參數(shù)中的第一個(gè)和第二個(gè)參數(shù)值
}
someFunction(firstParameterName: 1, secondParameterName: 2)
所有的參數(shù)都必須有一個(gè)獨(dú)一無二的名字潮瓶。雖然多個(gè)參數(shù)擁有同樣的參數(shù)標(biāo)簽是可能的,但是一個(gè)唯一的函數(shù)標(biāo)
簽?zāi)軌蚴鼓愕拇a更具可讀性陶冷。
指定參數(shù)標(biāo)簽
你可以在函數(shù)名稱前指定它的參數(shù)標(biāo)簽,中間以空格分隔:
func someFunction(argumentLabel parameterName: Int) {
// 在函數(shù)體內(nèi),parameterName 代表參數(shù)值
}
這個(gè)版本的greet(person:)函數(shù),接收一個(gè)人的名字和他的家鄉(xiāng),并且返回一句問候:
func greet(person: String, from hometown: String) -> String {
return "Hello \(person)!? Glad you could visit from \(hometown)."
}
print(greet(person: "Bill", from: "Cupertino"))
// 打印 "Hello Bill! Glad you could visit from Cupertino."
參數(shù)標(biāo)簽的使用能夠讓一個(gè)函數(shù)在調(diào)用時(shí)更有表達(dá)力,更類似自然語言,并且仍保持了函數(shù)內(nèi)部的可讀性以及清
晰的意圖。
忽略參數(shù)標(biāo)簽
如果你不希望為某個(gè)參數(shù)添加一個(gè)標(biāo)簽,可以使用一個(gè)下劃線(_)來代替一個(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)簽來標(biāo)記這個(gè)參數(shù)埂伦。