標籤:style 使用 strong art for cti
Functions (函數)
函數是一個執行特定任務的程式碼片段.通過名稱來標識和調用它們.
在Swift中,每個函數都有類型,包括函數的參數類型和傳回值類型.這些類型與Swift中的其他類型使用起來一樣,這使得函數可以作為參數傳遞給另一個函數,以及可以從一個函數中返 回函數,一個函數也可以寫在另一個函數內部,這樣可以更有效封裝和嵌套.
Defining and Calling Functions (定義和調用函數)
當你在定義函數的時候,你可以選擇性的命名一個或者多個參數類型值,以及函數執行後的傳回值類型.
每個函數都有一個名字,它是用了描述函數的功能.如果想調用這個函數,可以直接使用函數的名字並傳遞相應的參數(參數的類型要與函數的參數列表匹配).
下面是一個greetingForPerson函數的簡單例子,它接收一個人名作為參數,返回一個問候語(一個String類型的值):
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
上面的程式碼封裝含了函數定義的資訊:首碼的關鍵字func,以及緊跟在函數名稱後面的返回箭頭符號(->),它表示函數的傳回值類型.
這個定義範例描述了這個函數有什麼功能,它要接收什麼,以及函數完成後會返回什麼.這使得這個函數在代碼的其他地方調用都會非常清晰:
println(sayHello("Anna"))
// prints "Hello, Anna!"
println(sayHello("Brian"))
// prints "Hello, Brian!”
你可以多次調用sayHello函數,並使用不同的參數值.為了簡化函數體,可以使用一行代碼整合:
func sayHelloAgain(personName: String) -> String {
return "Hello again, " + personName + "!"
}
println(sayHelloAgain("Anna"))
// prints "Hello again, Anna!”
Function Parameters and Return Values (函數的參數和傳回值)
在Swift中,函數的參數和傳回值是非常富有彈性的.你可以定義任意類型的傳回值,也可以使用一個或者多個參數(或者匿名的參數).
Multiple Input Parameters (多個參數)
函數可以有多個參數,它們寫在函數的括弧內,並使用逗號分隔.
代碼例子:
func halfOpenRangeLength(start: Int, end: Int) -> Int {
return end - start
}
println(halfOpenRangeLength(1, 10))
// prints "9”
Functions Without Parameters (無參函數)
函數沒有要求必須使用參數.下面的函數例子中使用了沒有參數的函數,當它被調用的時候,它總是返回相同的String資訊:
func sayHelloWorld() -> String {
return "hello, world"
}
println(sayHelloWorld())
// prints "hello, world”
無參的函數定義的時候仍然需要在函數名後面使用括弧().
Functions Without Return Values (無傳回值函數)
函數也可以不定義傳回值,這麼的代碼範例定義了一個函數waveGoodbye,它只是列印輸出String值,而不是返回這個值:
func sayGoodbye(personName: String) {
println("Goodbye, \(personName)!")
}
sayGoodbye("Dave")
// prints "Goodbye, Dave!"
由於函數不需要傳回值,因此定義函數的時候沒有使用返回剪頭(->)
注意點:
嚴格意義上說,sayGoodbye函數仍然有傳回值,儘管沒有定義它的傳回值.當函數沒有定義傳回值的時候,這個函數返回一個Void類型的值.它是一個空的元組,元素個數為零,可以寫做 ().
在調用函數的時候,也可以忽略函數的傳回值:
func printAndCount(stringToPrint: String) -> Int {
println(stringToPrint)
return countElements(stringToPrint)
}
func printWithoutCounting(stringToPrint: String) {
printAndCount(stringToPrint)
}
printAndCount("hello, world")
// prints "hello, world" and returns a value of 12
printWithoutCounting("hello, world")
// prints "hello, world" but does not return a value”
注意點:
函數的傳回值可以被忽略,但是函數必須有一個傳回值.定義了函數的傳回值,但如果在函數最後沒有傳回值,將會導致一個編譯錯誤.