for money in oldArray {
if (money > 30) {
filteredArray += [money]
}
}
println(filteredArray) // [45, 32]
(靠。。居然忘了贴 filter 的用法,写到后面才发现。。)
用 filter 可以这样实现:
复制代码
var oldArray = [10,20,45,32]
var filteredArray = oldArray.filter({
return $0 > 30
})
println(filteredArray) // [45, 32]
你真的好短啊!
reduce
reduce 函数解决了把数组中的值整合到某个独立对象的问题。定义如下:
复制代码
func reduce<U>(initial: U, combine: (U, T) -> U) -> U
好吧看起来略抽象。我们还是从 for in 开始。比如我们要把数组中的值都加起来放到 sum 里,那么传统做法是:
复制代码
var oldArray = [10,20,45,32]
var sum = 0
for money in oldArray {
sum = sum + money
}
println(sum) // 107
reduce 有两个参数,一个是初始化的值,另一个是一个闭包,闭包有两个输入的参数,一个是原始值,一个是新进来的值,返回的新值也就是下一轮循环中的旧值。写几个小例子试一下:
复制代码
var oldArray = [10,20,45,32]
var sum = 0
sum = oldArray.reduce(0,{$0 + $1}) // 0+10+20+45+32 = 107
sum = oldArray.reduce(1,{$0 + $1}) // 1+10+20+45+32 = 108
sum = oldArray.reduce(5,{$0 * $1}) // 5*10*20*45*32 = 1440000
sum = oldArray.reduce(0,+) // 0+10+20+45+32 = 107
println(sum)
大概就是这些。
map 用来解包可选类型
我们在解包可选类型的时候,通常会这么做:
复制代码
func increment(someNumber: Int?) -> Int? {








