標籤:
函數:函數是獨立的代碼塊,執行特定的任務。
Swift 的統一函數文法足夠靈活,能表達沒有參數名稱的簡單的 C 型函數的任何東西,本地和外部複雜 Objective-C-style 方法參數名稱為每個參數。一旦函數完成其執行,參數可以提供預設值來簡化函數調用, 並且可以作為輸入輸出參數來傳遞,修改一個傳遞變數。
Swift 中的每個函數都有各自的類型,包括函數的參數類型和傳回型別。此類型類似於 Swift 中的任何 其他類型,您可以使用此類型,使它很容易將函數作為參數傳遞給其他函數,並從函數返回函數。函數也可以 寫在其他函數中,來封裝一個嵌套函數範圍內的有用的功能。
定義和調用函數:
當你定義一個函數時,您可以選擇性地定義一個或多個命名類型值,函數作為輸入(稱為參數),和/或一個類型的值,當它完成後函數將作為輸出返回(稱為其傳回型別)。
每一個函數都有一個函數名,用於描述該函數所執行的任務。使用一個函數,你用它的名字“調用”函數 並將其傳遞給匹配函數參數類型的輸入值(稱為參數)。所提供的函數的參數必須與函數的參數列表順序相 同。
簡單舉一個例子:定義一個名稱為sayhello的函數,一個類型為字串的參數personName,傳回值也是字串類型:
//單個參數func sayhello ( personNmae: String)->String{let greatName = "hello " + personNmae + "!"return greatName}
寫一句輸出語句:
println(sayhello("tom"))
此時在控制台上可以看到輸出這麼一句話:"hello tom!"
簡單分析一下這個代碼塊:func關鍵字是聲明一個函數,sayhello是定義的函數名,personName是類型為字串的參數,用->表示函數的傳回值,後面跟函數的傳回型別。
如果想要函數具有兩個參數,參考C語言,可以很容易的想到下面這種方式,輸入兩個int型的參數,計算兩者的和:
func sum (one:Int,two:Int)->Int{return one + two}println(sum(2,4))
//此時輸出的結果是6
注意:當函數中有多個參數時,需要用逗號分隔。
無參數函數:不要求函數對輸入參數進行定義。這是一個沒有輸入參數的函數,當被調用時,它總是返回相同的字串訊息。
//無參函數func NoPrame()->String{ return "這是一個無參函數"}println(NoPrame())
雖然該函數不採取任何參數,但是該函數名依然需要放在括弧中。當函數被調用時,函數名後要有一 對空括弧。
無傳回值函數:不要求函數對傳回型別進行定義。這裡定義了一個NoReturn函數,它會列印自 己的字串值,而不是返回它:
//無傳回值函數func NoReturn(onewords:String){println("這是\(onewords)") }NoReturn("一句話")//函數內部會輸出:一句話
具有多個傳回值的函數:下面的例子定義了一個名為 count 函數,它計算母音,輔音,和某一字串中的其他字元,基於美國 英語中使用母音和輔音的標準設定。
//具有多個傳回值的函數,元群組類型作為函數的傳回型別func count(string:String)->(vowels:Int,consonants:Int){var vowels = 0,consonants = 0 for character in string{ switch String(character).lowercaseString{ case "a","e","i","o","u": ++vowels case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z": ++consonants default: break } } return(vowels,consonants)}
在這裡進行count函數的調用:
let total = count("some arbitrary string!")println("\(total.vowels) vowels and \(total.consonants) consonants")
控制台會輸出:"6 vowels and 13 consonants"
Swift-函數學習