我正在尝试使用NSArray
将对象数组随机化为测验应用。每个问题编号包含每个数组。我尝试在ViewDidLoad
中添加一个排序,我收到以下错误。
“无法使用类型'的参数列表调用'下标'(inout inout $ T6,inout $ T11)“
我正在使用Swift
xCode 6
。我是iPhone App Development的初学者。
以下代码:
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
}
答案 0 :(得分:0)
你的问题是数组是不可变的。你需要做这样的事情:
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
}
答案 1 :(得分:0)
要在swift中获取输入参数的变量副本,只需将这些参数声明为变量(注意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
}
答案 2 :(得分:0)
简单地将您的数组设为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
}
&
当你调用你的函数时,你需要将var somet = [[1,2,3]]
shuffleArray(&somet)
放在数组变量之前,如下所示:
j
旁注:我将var
从let
更改为{{1}},因为您没有更改