2017-08-15 70 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