2017-08-15 43 views
1

我需要在randomQuestionGenerator函数之外使用currentQuestion变量。预先声明它的正确语法是什么?如何声明具有函数外部的结构数组的变量

struct Questions { 
    var Question: String 
    var answer: Int 
    var answers: [String] 
} 

class GameScreen: UIViewController { 

var correctAnswer = 0 
var fullQuestions: [Questions] = [] 

func RandomQuestionGenerator(){ 
    let randomQuestion = 
Int(arc4random_uniform(UInt32(fullQuestions.count))) 
    var currentQuestion = fullQuestions[randomQuestion] 
    correctAnswer = currentQuestion.answer 
+0

为什么不让'currentQuestion'类似于'correctAnswer'? – OOPer

回答

1

你可以声明currentQuestion作为可选功能外:

var currentQuestion : Questions? = nil 
func RandomQuestionGenerator() { 
    let randomQuestion = Int(arc4random_uniform(UInt32(fullQuestions.count))) 
    currentQuestion = fullQuestions[randomQuestion] 
    correctAnswer = currentQuestion.answer 
} 

虽然你可以做到这一点,更好的方法是使你的函数回报随机问题,像这样的:

func RandomQuestionGenerator() -> Questions { 
    let randomQuestion = Int(arc4random_uniform(UInt32(fullQuestions.count))) 
    return fullQuestions[randomQuestion] 
} 

现在您可以使用该函数来检索下一个随机问题,并根据需要获取其字段:

let nextQuestion = RandomQuestionGenerator() 
print(nextQuestion.Question) 
print(nextQuestion.answers) 
+0

除了设置一个随机问题变量之外,该函数还有很多其他功能,为了保持简单,我将其剪掉。 –

+0

另外,当我试图将它声明为问题类型时,我的视图控制器说它没有初始化器,并且不运行,为什么? –

+1

@RichardParker它也需要是可选的,以便允许未分配的状态。 – dasblinkenlight

相关问题