You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求优化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:46:12