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

Swift使用inout参数编写数组幂运算函数报错,是哪里操作有误?

错误原因与解决方案

第一个报错(forEach 内部逻辑错误)

  • forEach 是无返回值的遍历方法,仅用来执行遍历操作,本身不会返回任何结果,你在返回类型为 [Int] 的函数中直接返回 forEach 的执行结果,类型完全不匹配。
  • 如果你想用 inout 参数直接修改传入的原数组,需要在遍历中把计算出的幂值写回原数组对应位置,而不是只做计算不赋值。
  • 如果你不需要修改原数组,完全可以删除 inout 修饰,用 map 方法直接转换生成新数组返回,语法更简洁。

第二个报错(调用时无法传入数组字面量)

  • inout 参数要求传入的是可修改的变量,不能直接传入临时的数组字面量。你需要先把数组用 var 声明为变量,再取地址传入。

可选实现方案

方案1:保留inout设计(修改原数组,无返回值)

func numbersInPow(numbers: inout [Int], powerBy: Int) {
    for i in numbers.indices {
        numbers[i] = Int(pow(Double(numbers[i]), Double(powerBy)))
    }
}

var array = [1, 2, 3, 4, 5]
numbersInPow(numbers: &array, powerBy: 6)
print(array)

方案2:删除inout,返回新数组(更符合Swift纯函数设计习惯)

func numbersInPow(numbers: [Int], powerBy: Int) -> [Int] {
    return numbers.map { Int(pow(Double($0), Double(powerBy))) }
}

print(numbersInPow(numbers: [1, 2, 3, 4, 5], powerBy: 6))

内容的提问来源于stack exchange,提问作者Jenna2003

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:24:04