gpt4 book ai didi

arrays - 在 Swift 中映射或复制

转载 作者:搜寻专家 更新时间:2023-11-01 07:05:39 25 4
gpt4 key购买 nike

我最近写了一个扩展来替换不可变数组中的单个项目,并发现了两个很好的方法:

复制:

extension Array
{
func replacingItem(at index: Int, with item: Element) -> Array
{
precondition(index < self.count)
var copy = self
copy[index] = item
return copy
}
}

map :

extension Array
{
func replacingItem(at index: Int, with item: Element) -> Array
{
precondition(index < self.count)
return self.enumerated().map { $0.offset == index ? item : $0.element }
}
}

这两种方法中的一种比另一种更好吗?每种方法的运行方式有何不同?

最佳答案

复制

复制当前数组 (self) 并替换给定索引处的给定元素 (quasi o(1))。

map

创建一个新数组并遍历当前数组 (self)。在每次迭代中,如果索引与给定索引匹配(准 o(n)),它会附加当前元素或给定元素。


区别在于 Map 在后台执行重复循环,检查每个项目,这比立即复制对象并更新需要的项目一次,因此复制是更有效的方法。

关于arrays - 在 Swift 中映射或复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48185515/

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