您的位置:首页 > 移动开发 > Swift

Swift函数和闭包

2014-06-04 11:13 316 查看
函数

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

func greet (name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
greet ("Bob", "Tuesday")


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

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 ()


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

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)


闭包

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

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 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: