Swift心得笔记之集合类型

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

 

如果用 for in 来实现,则需要这样:

 

复制代码
var newArray : Array<T> = []
for item in oldArray {
    newArray += f(item)
}

 

举个例子,我们可以这样把价格数组中的数字前面都加上 ¥ 符号:

 

复制代码
var oldArray = [10,20,45,32]
var newArray = oldArray.map({money in "¥(money)"})
println(newArray) // [¥10, ¥20, ¥45, ¥32]

 

如果你觉得 money in 也有点多余的话可以用 $0 :

 

复制代码
newArray = oldArray.map({"($0)€"})

 

filter

方法如其名, filter 起到的就是筛选的功能,参数是一个用来判断是否筛除的筛选闭包,定义如下:

 

复制代码
func filter(includeElement: (T) -> Bool) -> [T]

 

还是举个例子说明一下。首先先看下传统的 for in 实现的方法:

 

复制代码
var oldArray = [10,20,45,32]
var filteredArray : Array<Int> = []
for money in oldArray {
    if (money > 30) {
        filteredArray += money
    }
}
println(filteredArray)

 

奇怪的是这里的代码编译不通过:

 

复制代码
Playground execution failed: <EXPR>:15:9: error: 'Array<Int>' is not identical to 'UInt8'
        filteredArray += money

 

发现原来是 += 符号不能用于 append ,只能用于 combine ,在外面包个 [] 即可:

 

复制代码
var oldArray = [10,20,45,32]
var filteredArray : Array<Int> = []