在Swift

时间:2018-08-31 06:31:38

标签: ios arrays swift swift4 higher-order-functions

我已经在 Swift 中浏览过有关高阶功能-filter, map, sort, reduce等如何工作的多篇文章。

我想知道的是这些方法的内部工作。他们是否使用产生最终输出?

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

var arr1 = arr.map { $0 * $0 }.filter { $0 % 2 == 0 } //Output: [4, 16, 36, 64, 100]

我的意思是,在上面的代码中,每次map处理arr中的一个元素时,它将被传递给filter而不等待map处理arr中的所有元素?

1 个答案:

答案 0 :(得分:2)

,他们没有。 filter仅在正常使用map完成时运行。

不过,您可以通过声明集合lazy来更好地优化它,其中只有当需要从链中下一个函数进行过滤时,才进行过滤。这也阻止了创建 intermediate 数组。 (否则,每个函数都会创建一个 new 数组,然后将其传递给下一个函数)


查看此内容,以获取有关延迟集合的非常好的说明。 -Lazy Collections in Swift