gpt4 book ai didi

xcode - Swift - [Int] 不是@lvalue$T2 的子类型

转载 作者:行者123 更新时间:2023-11-28 05:34:04 24 4
gpt4 key购买 nike

我正在尝试在 swift playground 中执行简单的排序功能,但出现以下错误:

Playground execution failed: error: <EXPR>:20:22: error: '[Int]' is not a subtype of '@lvalue $T2'
swap(&a,k,j) //Here in &a

我写了下面的代码:

let arr:[Int] = [1,3,53,24,52,1,234,5,3]

func swap(inout a:[Int], num1:Int, num2:Int){
var value = a[num1]
a[num1] = a[num2]
a[num2] = value
}

func sort(a:[Int]){
var j = 0
var k = 0
for (k = j ; k<=a.count; k++){
if(k != a.count){
if(a[k] < a[j]){
swap(&a,k,j)
}
}else{
j++;
}
}
}

print ("\(sort(arr)) is the array")

知道为什么这不起作用吗?我是否错误地引用了数组,谢谢!

更新:正如 Martin R 指出的错误,这里是更正后的代码:

var arr:[Int] = [1,3,53,24,52,1,234,5,3]

排序函数:

func sort(inout a:[Int]) -> [Int]{
var j = 0
var k = 0
for (k = j ; k <= a.count; k++){
if(k != a.count){
if(a[k] < a[j]){
swap(&a,j,k)
}
}else{
j++;
k = j
}
}
return a
}

最后:

print ("\(sort(&arr)) is the array")

最佳答案

中的局部参数 a
func sort(a:[Int])

默认是一个常量。因为你想修改传递的数组,你有以与 swap() 函数相同的方式将该参数声明为 inout:

func sort(inout a:[Int])

此外,传递的数组必须是可变:

var arr:[Int] = [1,3,53,24,52,1,234,5,3]

当它作为参数传递时,你必须在它前面加上 & 符号对于输入输出参数,表明它可以被函数修改:

sort(&arr)
println(arr)

还要注意

print ("\(sort(arr)) is the array")

不打印数组结果,因为sort()没有返回值。

关于xcode - Swift - [Int] 不是@lvalue$T2 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814600/

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