gpt4 book ai didi

arrays - 函数内结构数组的全局作用域 - Swift

转载 作者:行者123 更新时间:2023-11-30 10:14:37 24 4
gpt4 key购买 nike

我想打乱我的数组问题,并在程序启动时使用打乱后的数组。我创建了这个对数组进行洗牌的函数。

func shuffleQuestions() {
var shuffledQuestions = shuffle(questions)
}

这给了我一个带有打乱问题的数组,它继承了下面结构中的值。我遇到的问题是它是 shuffleQuestions 函数的本地问题。如何创建一个空的结构变量数组,我可以全局声明该变量以将打乱的问题放入其中。我需要创建一个新类(class)吗?

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
}

我的结构数组

class QuizQuestion {

let question: String!
let answer: Bool!
let explanation: String!
var usersAnswer: Bool?
var answerSubmitted: Bool?

init(question: String, answer: Bool, explanation: String) {
self.question = question
self.answer = answer
self.explanation = explanation
}
}

var questions = [

QuizQuestion(question: "Do I like coffee?", answer: true, explanation: "Because it's awesome!"),
QuizQuestion(question: "Is bacon god's gift to mankind?", answer: true, explanation: "Because it's awesome!"),
QuizQuestion(question: "Should I take a nap right now?", answer: true, explanation: "You gotta review some code!"),
QuizQuestion(question: "Should I take a nap right now?", answer: true, explanation: "You gotta review some code!")
]

最佳答案

“...这似乎不起作用...”可能是您在寻求帮助时可以说的最没有帮助的话的变体。你是什​​么意思它“似乎不起作用”?!?!?怎么行不通呢?解释一下它所做的哪些事情不能满足您的需求。是不是崩溃了? shuffledQuestions 数组是否未打乱顺序?

你写了一个完全没用的函数shuffleQuestions。看看你写的:

func shuffleQuestions() 
{
var shuffledQuestions = shuffle(questions)
}

该函数不返回结果。它声明了一个局部变量shuffledQuestions。它对 questions 数组的内容进行打乱,并将结果存储到局部变量 shuffledQuestions 中。然后函数返回。

当函数返回时,局部变量shuffledQuestions会发生什么?您需要思考这个问题,直到找到该问题的答案。

编辑:随着更新,您的问题更加清晰。

您编写的函数没有任何作用,因为它创建了一个排序数组作为局部变量。一旦函数返回,该变量就会被丢弃。

您有几个选择。您可以重写函数以返回排序后的数组:

func shuffleQuestions()  -> [QuizQuestion]
{
return shuffledQuestions = shuffle(questions)
}

或者您可以使 shuffleQuestions 函数对声明它的类的实例变量进行操作。

看起来您正在将变量问题声明为应用程序全局变量。最好避免全局变量。

就像我说的,听起来您并没有真正理解变量作用域和参数传递的概念。你应该回去读一些基本的编程概念(我知道现在有一本 Big Nerd Ranch 的书教 Swift。这可能是一个不错的选择。)

关于arrays - 函数内结构数组的全局作用域 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30893117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com