Swift心得笔记之集合类型

2020-01-08 22:44:23丽君

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? {