如果用 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> = []








