標籤: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-函數和閉包