我想将我的数组问题改组,并在程序启动时使用洗牌数组。我已经创建了这个对数组进行混洗的函数。
private void packageTable() {
Vector tableHeadings = new Vector();
tableHeadings.add("PACKAGE NAMES");
tableHeadings.add("SHOW");
Table1.setModel(new Model(fileVector, tableHeadings));
}
class Model extends DefaultTableModel {
Vector heading = null;
Model(Vector data, Vector heading) {
super(data, heading);
this.heading = heading;
}
public Class getColumnClass(int cols) {
if (getValueAt(0, cols) != null && cols > 0) {
return getValueAt(0, cols).getClass();
} else {
return String.class;
}
}
}
这给了我一个包含问题的数组,它继承了下面结构中的值。我遇到的问题是它是shuffleQuestions函数的本地函数。如何创建一个空数组的结构变量,我可以全局声明这个结构变量。我需要创建一个新类吗?
func shuffleQuestions() {
var shuffledQuestions = shuffle(questions)
}
func shuffle<C: MutableCollectionType where C.Index == Int>(var list: C) -> C {
let c = count(list)
for i in 0..<(c - 1) {
let j = Int(arc4random_uniform(UInt32(c - i))) + i
swap(&list[i], &list[j])
}
return list
}
答案 0 :(得分:1)
&#34; ......似乎不起作用......&#34;在寻求帮助时,你可以说是最不乐于助人的事情。你是什么意思&#34;似乎没有工作&#34;?!?!?它怎么样?说明它做了什么并不能满足你的需求。它崩溃了吗? shuffledQuestions数组是否没有洗牌?
你写了一个完全没用的函数shuffleQuestions
。看看你写的是什么:
func shuffleQuestions()
{
var shuffledQuestions = shuffle(questions)
}
该函数不返回结果。它声明了一个局部变量shuffledQuestions
。它会混洗questions
数组的内容,并将结果存储到局部变量shuffledQuestions
中。然后函数返回。
函数返回时局部变量shuffledQuestions
会发生什么?在你想出这个问题的答案之前,你需要考虑这个问题。
你写了一个没有任何好处的函数,因为它创建了一个排序数组作为局部变量。函数返回后,该变量将被丢弃。
你有几个选择。你可以重写你的函数来返回排序的数组:
func shuffleQuestions() -> [QuizQuestion]
{
return shuffledQuestions = shuffle(questions)
}
或者你可以让你的shuffleQuestions函数对它声明的类的实例变量进行操作。
看起来您正在将您的变量问题声明为全局应用程序。最好避免使用全局变量。
就像我说的,听起来你并不真正理解变量范围和参数传递的概念。你应该回过头来阅读基本的编程概念(我知道有一本Big Nerd Ranch书现在教Swift。这可能是个不错的选择。)