无法使用类型为 '(inout inout $T6, inout inout$T11) 的参数列表调用 'subscript'

Posted

技术标签:

【中文标题】无法使用类型为 \'(inout inout $T6, inout inout$T11) 的参数列表调用 \'subscript\'【英文标题】:Cannot invoke 'subscript' with an argument list of type '(inout inout $T6, inout inout$T11)无法使用类型为 '(inout inout $T6, inout inout$T11) 的参数列表调用 'subscript' 【发布时间】:2014-12-01 07:46:00 【问题描述】:

我正在尝试使用NSArray 为测验应用程序随机化一个对象数组。每个问题编号包含每个数组。我尝试在ViewDidLoad 中添加排序,但出现以下错误。

"不能使用类型为 '(inout inout $T6, inout inout$T11)"

我正在使用 SwiftxCode 6。我是 iPhone 应用开发的初学者。

代码如下:

func shuffleArray<T>(array: Array<T>) -> Array<T>


    for var index = array.count - 1; index > 0; index--
    
        var j = Int(arc4random_uniform(UInt32(index-1)))
        swap(&array[index], &array[j])
    
    return array

【问题讨论】:

【参考方案1】:

您的问题是数组是不可变的。你需要做这样的事情:

func shuffleArray<T>(array:Array<T>) -> Array<T> 
    var swapArray = array

    for var index = array.count - 1; index > 0; index-- 
        var j = Int(arc4random_uniform(UInt32(index-1)))

        swap(&swapArray[index], &swapArray[j])
    

    return swapArray

【讨论】:

【参考方案2】:

要快速获取输入参数的可变副本,只需将这些参数声明为变量(注意var array):

func shuffleArray<T>(var array: Array<T>) -> Array<T>  
    for var index = array.count - 1; index > 0; index--
    
        var j = Int(arc4random_uniform(UInt32(index-1)))
        swap(&array[index], &array[j])
    
    return array

【讨论】:

【参考方案3】:

简单地将您的数组设置为inout

func shuffleArray<T>(inout array: Array<T>) -> Array<T>


    for var index = array.count - 1; index > 0; index--
    
        let j = Int(arc4random_uniform(UInt32(index-1)))
        swap(&array[index], &array[j])
    
    return array

当你调用你的函数时,你需要将&amp;放在数组变量之前,如下所示:

var somet = [[1,2,3]]
shuffleArray(&somet)

旁注:我将 jvar 更改为 let 因为你没有更改它

【讨论】:

以上是关于无法使用类型为 '(inout inout $T6, inout inout$T11) 的参数列表调用 'subscript'的主要内容,如果未能解决你的问题,请参考以下文章

无法将“Int”类型的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void”

无法使用类型为“(设备:AVCaptureDevice!,错误:inout NSError?)”的参数列表调用类型“AVCaptureDeviceInput”的初始化程序

无法使用类型为“的参数列表”调用“jsonObject”(带有:NSData,选项:JSONSerialization.ReadingOptions,错误:inout NSError?)

无法获取 SP 的动态执行以返回 INOUT 参数

无法将“NSLayoutConstraint”类型的不可变值作为 inout 参数传递

rpc与gwt一起使用时如何将参数类型设置为inout?