iOS-swift-函數和閉包

來源:互聯網
上載者:User

標籤:min   print   訪問   any   簡單   class   .so   ios   var   

一、函數

    關鍵字:func

    參數列表用 , 分割

    使用 -> 分割參數和傳回值

1     func greet(person: String, day: String) -> String {2         return "Hello \(person), today is \(day)."3     }4     greet(person: "Bob", day: "Tuesday")

 

在參數名前面加 _ 表示隱藏參數標籤,也可以添加參數名。

1     func greet(_ person: String, on day: String) -> String {2         return "Hello \(person), today is \(day)."3     }4     greet("John", on: "Wednesday")

 

使用元組(tuple)構建複合類型值。比如一個函數返回多個值。元組的元素可以通過名字或者下標擷取。

 1     func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) { 2         var min = scores[0] 3         var max = scores[0] 4         var sum = 0 5          6         for score in scores { 7             if score > max { 8                 max = score 9             } else if score < min {10                 min = score11             }12             sum += score13         }14         15         return (min, max, sum)16     }17     let statistics = calculateStatistics(scores: [5, 3, 100, 3, 9])18     print(statistics.sum)19     print(statistics.2)

函數可以使用變化的參數,這些參數將會放進數組裡面。

1     func sumOf(numbers: Int...) -> Int {2         var sum = 03         for number in numbers {4             sum += number5         }6         return sum7     }8     sumOf()9     sumOf(numbers: 42, 597, 12)

函數裡面可以嵌套函數。

1     func returnFifteen() -> Int {2         var y = 103         func add() {4             y += 55         }6         add()7         return y8     }9     returnFifteen()

函數可以作為另一個函數的類型

1     func makeIncrementer() -> ((Int) -> Int) {2         func addOne(number: Int) -> Int {3             return 1 + number4         }5         return addOne6     }7     var increment = makeIncrementer()8     increment(7)

函數可以作為另一個函數的參數

 1     func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool { 2         for item in list { 3             if condition(item) { 4                 return true 5             } 6         } 7         return false 8     } 9     func lessThanTen(number: Int) -> Bool {10         return number < 1011     }12     var numbers = [20, 19, 7, 12]13     hasAnyMatches(list: numbers, condition: lessThanTen)

 二、閉包(closures)    函數是閉包的的一種特殊情況:代碼塊延時調用。

    可以用大括弧 {} 寫一個閉包。 使用 "in" 把閉包參數和傳回值從閉包體區分開來。

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

    可以更簡單,功能一樣。

    let mappedNumbers = numbers.map({ number in 3 * number })    print(mappedNumbers)

    可以使用數值下標代替名字訪問參數,這個對於簡短的閉包很有用。

    當一個閉包是函數的唯一參數,可以省略圓括弧。

    let sortedNumbers = numbers.sorted { $0 > $1 }    print(sortedNumbers)

嗯,努力!

 

iOS-swift-函數和閉包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.