数组 – Swift Generic Array’不相同’错误

数组 – Swift Generic Array’不相同’错误,第1张

概述我刚刚经历了一些从Beta3开始显然已经过时的 Swift tuts …… func exchange<T>(data:[T], i:Int, j:Int){ let temp = data[i]; data[i] = data[j]; data[j] = temp;} 游乐场告诉我: 错误:@lvalue $T8与T不同. 如何更改它以使其工作? Swift中的数组 我刚刚经历了一些从Beta3开始显然已经过时的 Swift tuts ……

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

游乐场告诉我:

错误:@lvalue $T8与T不同.

如何更改它以使其工作?

解决方法 Swift中的数组是值类型.这意味着数据在传递到您的交换方法时会被复制,但您尝试修改副本以影响原始版本.相反,你应该做两件事之一:

1.将数据定义为inout参数:

func exchange<T>(inout data:[T],j:Int)

然后在调用它时你必须添加一个&通话前:

var myArray = ["first","second"]exchange(&myArray,1)

2.返回数组的副本(推荐)

func exchange<T>(data:[T],j:Int) -> [T]{    var newData = data    newData[i] = data[j]    newData[j] = data[i]    return newData}

我推荐使用这种方法而不是in-out参数,因为in-out参数会创建更复杂的状态.你有两个变量指向并可能 *** 纵同一块内存.如果交换决定在一个单独的线程上完成它的工作怎么办?还有一个原因是Apple决定使用in-out subverts来制作数组值类型.最后,返回副本更接近Functional Programming,这是Swift可以移动的有前途的方向.我们的应用程序中的状态越少,我们将创建的错误越少(通常).

总结

以上是内存溢出为你收集整理的数组 – Swift Generic Array’不相同’错误全部内容,希望文章能够帮你解决数组 – Swift Generic Array’不相同’错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1010577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存