1 // Playground - noun: a place where people can play 2 3 import Cocoa 4 //函数和闭包 5 6 //函数,使用func关键字声明函数: 7 func greet(name:String, day:String) -> String { 8 return "Hello \(name), today is \(day)." 9 } 10 greet("Bob", "Tuesday") 11 12 13 //通过元组(Tuple)返回多个值 14 func getGasPrices() -> (Double, Double, Double){ 15 return (3.59, 3.69, 3.79) 16 } 17 getGasPrices() 18 19 //支持带有变长参数的函数 20 func sumOf(numbers: Int...) -> Int { 21 var sum = 0 22 for number in numbers { 23 sum += number 24 } 25 return sum 26 } 27 28 sumOf() 29 sumOf(42, 597, 12) 30 31 //函数也可以嵌套 32 func returnFifteen() -> Int { 33 var y = 10 34 func add() { 35 y += 5 36 } 37 add() 38 return y 39 } 40 41 returnFifteen() 42 43 //作为头等对象,函数既可以作为返回值,也可以作为参数传递 44 45 func makeIncrementer() -> (Int -> Int) { 46 func addOne(number: Int) -> Int { 47 return 1 + number 48 } 49 return addOne 50 } 51 var increment = makeIncrementer() 52 increment(7) 53 54 func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool { 55 for item in list { 56 if condition(item) { 57 return true 58 } 59 } 60 return false; 61 } 62 63 func lessThanTen(number: Int) -> Bool { 64 return number < 10 65 } 66 var numbers = [20, 19, 7, 12] 67 hasAnyMatches(numbers, lessThanTen) 68 69 //闭包--本质上来说,函数是特殊的闭包,Swift中可以利用{}声明匿名闭包 70 71 numbers.map({ 72 (number: Int) -> Int in 73 let result = 3 * number 74 return result 75 }) 76 //当闭包的类型已知时,可以使用下面的简化写法 77 numbers.map({ number in 3 * number }) 78 //此外还可以通过参数的 位置来使用参数,当函数最后一个参数是闭包时,可以使用下面的语法: 79 sort([1, 5, 3, 12, 2]) {$0 > $1}
时间: 2024-10-12 22:50:22