码迷,mamicode.com
首页 > 其他好文 > 详细

Swift函数和闭包

时间:2014-06-06 07:49:12      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

函数

  Swift 使用func关键字声明函数:

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

通过元组(Tuple)返回多个值:

bubuko.com,布布扣
1 func getGasPrices () -> (Double, Double, Double) {
2     return (3.59, 3.69, 3.79)
3 }
4 getGasPrices ()
bubuko.com,布布扣

支持带有变长参数的函数:

bubuko.com,布布扣
1 func sumOf (numbers: Int...) -> Int {
2     var sum = 0 for number in numbers {
3         sum += number
4     }
5     return sum
6 }
7 sumOf ()
8 sumOf (42, 597, 12)
bubuko.com,布布扣

函数也可以嵌套函数:

bubuko.com,布布扣
1 func returnFifteen () -> Int {
2     var y = 10
3     func add () {
4         y += 5
5     }
6     add ()
7     return y
8 }
9 returnFifteen ()
bubuko.com,布布扣

作为头等对象,函数既可以作为返回值,也可以作为参数传递:

bubuko.com,布布扣
1 func makeIncrementer () -> (Int -> Int) {
2     func addOne (number: Int) -> Int {
3         return 1 + number
4     }
5     return addOne
6 }
7 var increment = makeIncrementer ()
8 increment (7)
bubuko.com,布布扣
bubuko.com,布布扣
 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 < 10
11 }
12 var numbers = [20, 19, 7, 12]
13 hasAnyMatches (numbers, lessThanTen)
bubuko.com,布布扣

 

闭包

  本质来说,函数是特殊的闭包,Swift 中可以利用{}声明匿名闭包:

bubuko.com,布布扣
1 numbers.map ({
2     (number: Int) -> Int in
3     let result = 3 * number
4     return result
5     })
bubuko.com,布布扣

当闭包的类型已知时,可以使用下面的简化写法:

bubuko.com,布布扣
1 numbers.map ({ number in 3 * number })
bubuko.com,布布扣

此外还可以通过参数的位置来使用参数,当函数最后一个参数是闭包时,可以使用下面的语法:

bubuko.com,布布扣
1 sort ([1, 5, 3, 12, 2]) { $0 > $1 }
bubuko.com,布布扣

 

 

Swift函数和闭包,布布扣,bubuko.com

Swift函数和闭包

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/atong/p/3767453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!