gpt4 book ai didi

swift - 无法通过下标快速分配

转载 作者:搜寻专家 更新时间:2023-11-01 06:57:16 26 4
gpt4 key购买 nike

我正在尝试在 Swift 中实现通用算法。

即使我没有将数字定义为 let 变量,但我收到以下错误:

cannot assign through subscript: 'numbers' is a 'let' constant numbers[i] = maxNumber

我的实现如下:

func InsertionSort (numbers : [Int]) -> [Int]
{
var maxNumber = 0
var j = 0
var size = numbers.count-1

for (i,number) in numbers.enumerated()
{
j = i + 1
for index in j...size
{
if numbers[index] > number
{
maxNumber = numbers[index]
numbers[index] = numbers[i]
// error is thrown in the following line
numbers[i] = maxNumber
}
}
}

return numbers
}

最佳答案

默认情况下参数是不可变的。要使参数可变,您需要添加一个 inout 修饰符。

但是,看到您的方法返回 一个数组,您可能不希望参数也被修改。您应该制作参数的副本,修改它,然后返回副本:

func InsertionSort (numbers : [Int]) -> [Int]
{
var maxNumber = 0
var j = 0
let size = numbers.count-1
var numbersCopy = numbers // <------ note this line

for (i,number) in numbers.enumerated()
{
j = i + 1
for index in j...size
{
if numbers[index] > number
{
maxNumber = numbers[index]

// note how I modified the copy here
numbersCopy[index] = numbers[i]
numbersCopy[i] = maxNumber
}
}
}

return numbersCopy
}

关于swift - 无法通过下标快速分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52828989/

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