Generics 基于泛型的函数不再工作
此函数在先前版本的Xcode6中工作(声明为Generics 基于泛型的函数不再工作,generics,swift,Generics,Swift,此函数在先前版本的Xcode6中工作(声明为array:T[]) func shuffle(数组:[T])->Void{ 对于0..中的i,问题是数组已更改为true值类型。这意味着在分配给新变量或传递给方法时,始终会复制该数组。您试图修改该副本,但最终不会执行任何操作,因此编译器会通过使数组不可变来阻止您 要解决此问题,可以将array定义为inout参数: func shuffle<T>(inout array: [T]) -> Void { 这将允许它在多线程环境中安全
array:T[]
)
func shuffle(数组:[T])->Void{
对于0..中的i,问题是数组已更改为true值类型。这意味着在分配给新变量或传递给方法时,始终会复制该数组。您试图修改该副本,但最终不会执行任何操作,因此编译器会通过使数组
不可变来阻止您
要解决此问题,可以将array
定义为inout参数:
func shuffle<T>(inout array: [T]) -> Void {
这将允许它在多线程环境中安全工作,并允许将选项传递给您的函数。由于OP正在修改数组
,第二个需要是func shuffle(变量数组:[T])->[T]{
。谢谢@NateCook,我只是假设实现会有所不同,但是你的建议使转换更容易。我更新了我的答案。
func shuffle<T>(inout array: [T]) -> Void {
func shuffle<T>(var array: [T]) -> [T] {