Swift-函數

使用 func 來聲明一個函數。-> 後面的是函數的返回類型,舉個栗子

func greet(name: String, day: String) -> String {
    return "Hello \(name), today is \(day)."
}
greet("Bob", day: "Tuesday") // 輸出結果爲 Hello Bob, today is Tuesday.


如果是重寫一個已有的函數要在前面加 override,比如假設我們現在正在寫一個自定義的 controller:

override func viewDidLoad() {
    super.viewDidLoad()
    // do something
}


在 C 語言裏函數最多隻能返回一個值,但是在 Swift 中通過使用元組,函數可以返回多個值(挺好)。舉個栗子

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 類型的。作用是返回數組內元素的拼接結果。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章