今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于可以腾出点时间来学习技术了。好了,我们继续学习swift,上一部分我们探讨和学习了swift的数据类型和流程控制语句,swift语句确实很灵活。致一点是不容置疑的。今天我们再来看看swift的函数和闭包。
(1)使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值。
func greeting(name:String , day : String) -> String { return "you name is \(name),today is \(day)"
} greeting("bob", day: "tusday")
(2)使用一个元组来返回多个值。
greeting("bob", day: "tusday") func vagetable() -> (Double,Double,Double) { return (12.44,34.55,56.77) }
vagetable()
(3)函数的参数数量是可变的,用一个数组来获取它们
func sumOf(numbers: Int...) -> Int { var sum = for number in numbers { sum += number } return sum } sumOf() sumOf(,,,)
(4)函数可以嵌套。被嵌套的函数可以访问外侧函数的变量,你可以使用嵌套函数来重构一个太长或者太复杂的函数。
func returnFifteen() -> Int { var y = func add() { y +=
} add() return y
} returnFifteen()
(5)函数可以作为另一个函数的返回值。
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return + number
} return addOne
} var increment = makeIncrementer() increment()
(6)函数也可以当做参数传入另一个函数
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 < }
var numbers = [, , , ]
hasAnyMatches(numbers, lessThanTen)
(7)函数实际上是一种特殊的闭包,你可以使用{}来创建一个匿名闭包。使用in来分割参数并返回类型
numbers.map({ (number: Int) -> Int in let result = * number return result })
(8)有很多种创建闭包的方法。如果一个闭包的类型已知,比如作为一个回调函数,你可以忽略参数的类型和返回值。单个语句闭包会把它语句的值当做结果返回。
你可以通过参数位置而不是参数名字来引用参数——这个方法在非常短的闭包中非常有用。当一个闭包作为最后一个参数传给一个函数的时候,它可以直接跟在括号后面。
sort([, , , , ]) { $ > $ }