標籤: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 }
下一節我們說說對象和類