使用 func 來聲明一個函數。-> 後面的是函數的返回類型,舉個栗子:
func greet(name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
greet("Bob", day: "Tuesday") // 輸出結果爲 Hello Bob, today is Tuesday.
override func viewDidLoad() {
super.viewDidLoad()
// do something
}
func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {
var min = scores[0] // 記錄最小值
var max = scores[0] // 記錄最大值
var sum = 0 // 記錄累加和
for score in scores {
if score > max {
max = score
} else if score < min {
min = score
}
sum += score
}
return (min, max, sum)
}
let statistics = calculateStatistics([3, 2, 1, 4, 5])
print(statistics.min, statistics.max, statistics.sum) // 元組可以通過名稱訪問
print(statistics.0, statistics.1, statistics.2) // 也可以通過下標訪問,輸出結果都是 1 5 15
解釋一下,這個函數只有一個參數,這個參數是一個數組,數組內的元素都是 int 類型的。
函數的返回值類型是元組,元組中有三個元素,分別是最小值、最大值、累加和,都是 int 類型的。
函數的作用就是求出指定數組內元素的最小值、最大值、累加和。
這樣一個函數,放在 C 語言裏要寫成三個函數。。。囧
函數可以有可變個數的參數,用 ... 表示。OC 裏也有這個,但是在混編的時候我弄不明白 Swift 裏的可變參數了。原來這些可變參數在函數內表現爲數組的形式:
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
sumOf() // 輸出結果爲 0
sumOf(4, 1, 2) // 輸出結果爲 7
func appendString(strings: String...) -> String {
var str = ""
for string in strings {
str = str.stringByAppendingString(string)
}
return str
}
appendString() // 輸出結果爲 空
appendString("He", "llo", ", ", "b", "oy!") // 輸出結果爲 Hello, boy!
在第一個栗子中,參數是 numbers。numbers 是一個數組名,它內部的元素是 int 類型的。作用是返回數組內元素的累加和。
在第二個栗子中,參數是 strings。strings 是一個數組名,它內部的元素是 String 類型的。作用是返回數組內元素的拼接結果。