Swift學習——A Swift Tour 函數

來源:互聯網
上載者:User

標籤:blog   get   使用   2014   os   art   

Functions and Closures  函數和封閉性(閉包)


Functions  函數的使用

Swift中的函數定義和OC中有明顯的差別了,使用func定義函數,在括弧裡定義參數和類型,用 -> 定義返回值類型

func greet(name: String, day: String) -> String {    return "Hello \(name), today is \(day)."}greet("Bob", "Tuesday")

使用一個元組 ()用來返回多個返回值

func getGasPrices() -> (Double, Double, Double) {    return (3.59, 3.69, 3.79)}getGasPrices()

函數還能夠有可變數量的參數(一般這樣的情況傳進去個數組就好吧),注意是三個點哦  ...

func sumOf(numbers: Int...) -> Int {    var sum = 0    for number in numbers {        sum += number    }    return sum}sumOf()sumOf(42, 597, 12)

函數還能夠進行嵌套,嵌套的函數能夠訪問外部函數的變數

func returnFifteen() -> Int {    var y = 10    func add() {        y += 5    }    add()    return y}returnFifteen()

新特性:Swift定義了函數也是一種類型,也即是說能夠定義一個函數變數,某個函數的返回值能夠是一個函數

func makeIncrementer() -> (Int -> Int) {    func addOne(number: Int) -> Int {        return 1 + number    }    return addOne}var increment = makeIncrementer()increment(7)

函數能夠將另外一個函數作為它的一個參數

func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {    for item in list {        if condition(item) {            return true        }    }    return false}func lessThanTen(number: Int) -> Bool {    return number < 10}var numbers = [20, 19, 7, 12]hasAnyMatches(numbers, lessThanTen)


Closures  閉包的使用

函數事實上是閉包的一種情況,你能夠定義一個沒有名字的閉包,僅僅須要用大括弧 { } 將閉包含起來,使用  in 來劃分變數和返回值 (事實上功能就類似OC中的Block)

numbers.map({    (number: Int) -> Int in    let result = 3 * number    return result    })

你能夠省略參數類型和返回值讓上面的閉包更加簡單介紹,僅僅有一條語句的閉包直接返回這條語句啟動並執行結果

numbers.map({ number in 3 * number })

你還能夠在括弧後面寫閉包

sort([1, 5, 3, 12, 2]) { $0 > $1 }

下一節我們說說對象和類

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.