请求优化Swift数组元素翻倍函数:现有代码存在问题
问题分析与优化指导
原代码的问题
你的代码存在语法错误:arr += a[i] * 2这行无法编译。因为arr是[Int]类型,+=操作符要求右侧是同类型的序列(比如另一个数组),而你传入的是单个Int值。正确添加元素的方式应该是调用arr.append(a[i] * 2)。
另外,原代码用手动维护索引和计数器的while循环实现,写法繁琐,不符合Swift的简洁风格。
优化方案
方案1:修正循环写法(基础修正)
用for-in循环直接遍历数组元素,省去手动维护索引的麻烦:
func maps(a: [Int]) -> [Int] { var arr = [Int]() for num in a { arr.append(num * 2) } return arr }
方案2:使用map函数(最地道的Swift写法)
Swift数组内置的map方法专门用于将每个元素转换为新值并返回新数组,完全匹配你的需求,代码极度简洁:
func maps(a: [Int]) -> [Int] { a.map { $0 * 2 } }
方案3:预分配数组容量(针对大数据量的性能优化)
如果处理超大数组,提前预分配容量可以减少内存分配次数,提升性能:
func maps(a: [Int]) -> [Int] { var arr = [Int](reserveCapacity: a.count) for num in a { arr.append(num * 2) } return arr }
日常场景下,map方法的效率已经足够,无需额外做这个优化。
内容的提问来源于stack exchange,提问作者user8359454
相关产品推荐
相关产品推荐

