Swift语法基础:3 - Swift的函数和闭包
在Swift中, 一样是存在函数和闭包的, 现在让我们来看看Swift的函数和闭包:
1.使用func来声明函数
func person(name: String, age:String) -> String {
return ("The name is \(name), age is \(age)")
}
println(person("xiaoming", "20"))
// 打印出来的结果:The name is xiaoming, age is 20
2.声明一个多元组的函数
func home() -> (Double, Double, Double) {
return (10.0, 20.0, 30.0)
}
println(home())
// 打印出来的结果: (10.0, 20.0, 30.0)
3.在声明函数的时候, 我们也可以这么去声明
func sumOf(numbers:Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
println(sumOf(1, 2, 3))
// 打印出来的结果: 6
PS: “Int…”是数组的意思.
4.函数的嵌套
func returnFifeen() -> Int{
var i = 10
func add() {
i++
}
add()
return i
}
println(returnFifeen())
// 打印出来的结果: 11
利用这个特性, 函数与函数的嵌套使用同样是可以返回的:
func makeIncrementer() ->(Int -> Int) {
func addOne(number:Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
println(increment(7))
// 打印出来的结果: 8
也可以当做另一个参数传入:
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]
println(hasAnyMatches(numbers, lessThanTen))
// 打印出来的结果: true
5.闭包的声明以及简单运用
var names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
func backwards(s1: String, s2: String) -> Bool {
return s1 > s2
}
var reversed = sorted(names, backwards)
println(reversed)
// 打印出来的结果: [Ewa, Daniella, Chris, Barry, Alex]
PS: 在Sort是默认没有返回值的, 而Sorted的返回值是倒序排列.
这里有个官方的例子:
func hasAnyMatches1(list:[Int], condition:Int -> Bool) -> Bool {
for item in list {
if condition(item){
return true
}
}
return false
}
func lessThanTen1(number: Int) -> Bool {
return number < 10
}
var numbers1 = [20, 9, 7, 12]
println(hasAnyMatches1(numbers1, lessThanTen1))
// 打印出来的结果: true
numbers1.map({
(number: Int) -> Int in
let result = 3 * number
return result
})
let mappedNumbers = numbers1.map({
number in 3 * number
})
println(mappedNumbers)
// 打印出来的结果: [60, 27, 21, 36]
let sortedNumbers = sorted(numbers1) {$0 > $1}
println(sortedNumbers)
// 打印出来的结果: [20, 12, 9, 7]
PS: Sorted默认的排序是从小到大, 但是在sorted()后面加上{
好了, 这次我们就讲到这里, 下次我们继续