gpt4 book ai didi

swift - 数组映射与 Swift 中的 forEach

转载 作者:IT王子 更新时间:2023-10-29 05:48:30 26 4
gpt4 key购买 nike

在 Swift 数组中你可以这样做:

var myArray = [1,2,3,4]

myArray.forEach() { print($0 * 2) }

myArray.map() { print($0 * 2) }

他们都做同样的事情。唯一的区别是 .map 也返回一个空数组,[(),(),(),()],它未被使用。这是否意味着 .map 在未分配任何内容时比 .forEach 表现更差?

最佳答案

根据 Apple 的定义,在 Swift 中,

map is used for returning an array containing the results of mapping the given closure over the sequence’s elements

然而,

forEach calls the given closure on each element in the sequence in the same order as a for-in loop.

两者在 Swift 中都有两个不同的目的。尽管在您的示例中 map 工作正常,但这并不意味着您应该在这种情况下使用 map

map 例如:-

let values = [1.0, 2.0, 3.0, 4.0]
let squares = values.map {$0 * $0}

[1.0, 4.0, 9.0, 16.0] //squares has this array now, use it somewhere

forEach 例如:-

let values = [1.0, 2.0, 3.0, 4.0]
values.forEach() { print($0 * 2) }

打印下面的数字。这次没有返回数组。

2.0

4.0

6.0

8.0

简而言之,回答您的问题,是的,从 map 生成的数组被浪费了,因此在这种情况下您应该使用 forEach

更新:

OP 评论说,当他测试时,map 的性能优于 forEach。这是我在 Playground 上尝试并发现的。对我而言,forEachmap 表现得更好,如图所示。 forEach 耗时 51.31 秒,而 map 耗时 51.59 秒,相差 0.28 秒。基于此,我并不是说 forEach 更好,但两者具有相似的性能属性,使用哪一个取决于特定的用例。

forEach vs Map performance test

关于swift - 数组映射与 Swift 中的 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com