【问题标题】: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
}

【问题讨论】:

    标签: ios arrays swift


    【解决方案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 因为你没有更改它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-19
          • 1970-01-01
          • 2016-04-01
          • 2021-06-29
          • 2015-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多