gpt4 book ai didi

swift 错误 "[T] is not a subtype of"

转载 作者:可可西里 更新时间:2023-11-01 01:06:50 25 4
gpt4 key购买 nike

在学习 Swift 教程时遇到了一些麻烦...

func exchange<T>(inout data:[T], i:Int, j:Int)
{
let temp = data[i];
data[i] = data[j];
data[j] = temp;
}

func swapLeft<T: Comparable>(data: [T], index:Int)
{
for i in reverse(1...index)
{
if (data[i] < data[i - 1])
{
exchange(&data, i, i - 1);
}
else
{
break;
}
}
}

var data = [Int]();
data = [84, 0, 1, 63, 20, 12, 11, 63, 13, 99, 89, 98, 94, 31, 88, 48, 90, 30, 68, 43];
swapLeft(data, 6);
data

swapLeft交换调用产生错误:

Playground execution failed: error: :32:13: error: '[T]' is not a subtype of '@lvalue $T3'

我有一个模糊的假设,这是因为 swapLeft使用 Comparable 泛型,但 exchange 使用非 Comparable 泛型。但是将 exchange 更改为 func exchange<T: Comparable>...不会修复它。有谁知道在那里做什么?

最佳答案

您的问题仍然是关于inout。您的 swapLeft 函数缺少 inout 说明符:

func swapLeft<T: Comparable>(inout data: [T], index:Int)

当你调用它时,你必须取消对数组的引用:

swapLeft(&data, 6);

关于 swift 错误 "[T] is not a subtype of",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785499/

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