當(dāng)你定義一個函數(shù)時,你可以定義一個或多個有名字和類型的值,作為函數(shù)的輸入(稱為參數(shù),parameters),也可以定義某種類型的值作為函數(shù)執(zhí)行結(jié)束的輸出(稱為返回類型)。
每個函數(shù)有個函數(shù)名,用來描述函數(shù)執(zhí)行的任務(wù)。要使用一個函數(shù)時,你用函數(shù)名“調(diào)用”,并傳給它匹配的輸入值(稱作實(shí)參,arguments)。一個函數(shù)的實(shí)參必須與函數(shù)參數(shù)表里參數(shù)的順序一致。
在下面例子中的函數(shù)叫做"greetingForPerson",之所以叫這個名字是因?yàn)檫@個函數(shù)用一個人的名字當(dāng)做輸入,并返回給這個人的問候語。為了完成這個任務(wù),你定義一個輸入?yún)?shù)-一個叫做 personName 的 String 值,和一個包含給這個人問候語的 String 類型的返回值:
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
所有的這些信息匯總起來成為函數(shù)的定義,并以 func 作為前綴。指定函數(shù)返回類型時,用返回箭頭 ->(一個連字符后跟一個右尖括號)后跟返回類型的名稱的方式來表示。
該定義描述了函數(shù)做什么,它期望接收什么和執(zhí)行結(jié)束時它返回的結(jié)果是什么。這樣的定義使的函數(shù)可以在別的地方以一種清晰的方式被調(diào)用:
println(sayHello("Anna"))
// prints "Hello, Anna!"
println(sayHello("Brian"))
// prints "Hello, Brian!"
調(diào)用 sayHello 函數(shù)時,在圓括號中傳給它一個 String 類型的實(shí)參。因?yàn)檫@個函數(shù)返回一個 String 類型的值,sayHello 可以被包含在 println 的調(diào)用中,用來輸出這個函數(shù)的返回值,正如上面所示。
在 sayHello 的函數(shù)體中,先定義了一個新的名為 greeting 的 String 常量,同時賦值了給 personName 的一個簡單問候消息。然后用 return 關(guān)鍵字把這個問候返回出去。一旦 return greeting 被調(diào)用,該函數(shù)結(jié)束它的執(zhí)行并返回greeting 的當(dāng)前值。
你可以用不同的輸入值多次調(diào)用 sayHello。上面的例子展示的是用"Anna"和"Brian"調(diào)用的結(jié)果,該函數(shù)分別返回了不同的結(jié)果。
為了簡化這個函數(shù)的定義,可以將問候消息的創(chuàng)建和返回寫成一句:
func sayHelloAgain(personName: String) -> String {
return "Hello again, " + personName + "!"
}
println(sayHelloAgain("Anna"))
// prints "Hello again, Anna!"