Swift编程:闭包、函数式编程、协议与泛型全解析
1. 函数式编程中的懒加载与柯里化函数
1.1 懒加载列表
在Swift中,我们可以使用懒加载列表来优化性能。通常,我们直接对数组调用 map 方法,但也可以对数组的懒加载版本调用 map 方法。这样,每次从结果中请求一个值时,它只会处理输入数组中的一个元素。
let lazyStrings = lazy(numbers).map({"\($0)"})
for string in lazyStrings {
println(string)
}
在上述代码中,每个数字只有在 for-in 循环的下一次迭代时才会转换为字符串。如果提前跳出循环,其余的值将不会被计算,这在处理大列表时可以节省大量的处理时间。
需要注意的是, sorted 和 reduce 方法在懒加载列表上不可用,因为对列表进行排序或归约需要同时考虑列表中的每个元素。如果确实需要对懒加载列表调用 sort 或 reduce ,则必须先通过调用 array 方法将所有元素收集回一个非懒加载数组中:
lazyStrings.array.reduce("", combine: +) // "12345"
超级会员免费看
订阅专栏 解锁全文
99

被折叠的 条评论
为什么被折叠?



