2014-09-20 28 views
0

基本上我想做一个简单的测验应用程序,而不是写出每一个单独的问题,我试图通过编写一个函数,那么,这将创造它让我加快速度。如何动态地更改基于函数参数的字典的名字吗?

这是我迄今为止

func answerTemplate(answerOne:String, answerTwo:String, answerThree:String, answerFour:String, factNumber:String) { 
    let fact("\(factNumber)") = ["A": "\(answerOne)", "B": "\(answerTwo)", "C": "\(answerThree)", "D": "\(answerFour)" ] 
} 

正如你可以看到我试图更改字典名称是事实+的问题然而,这是给我的错误数量“上连续发言线必须由被分隔;)

反正有它,这样我每次创建函数时它会创建一个字典,一个动态的名字

这里是我怎么想创建?他们:

let answerArray = [ 

    answerTemplate("Beach", "Crickets", "Pac-Man", "Banging", "one"), 
    answerTemplate("Zipper", "Tie", "Shoe Lace", "Belt", "two"), 
    answerTemplate("New York", "North Carolina", "Massachusetts", "Rhode Island", "three") 
] 

如果不是,有另一种方式来完成我想在这里做什么?

+0

什么是你想实现与'让事实( “\(factNumber)”)'? – idmean 2014-09-20 10:46:51

+0

@wumm所以说,举例来说,当我调用它时,我将“四”放入func参数中,该字典名称将是“FactFour”。 – Harazzy 2014-09-20 10:49:13

+0

但你为什么认为应该起作用? 'let'声明一个变量,但是你在做什么看起来更像是一个函数调用。或者我错过了什么?你在哪里宣布“事实”? – idmean 2014-09-20 10:50:29

回答

0

不能在斯威夫特在运行时声明任何变量。 (什么你正在尝试做的。)

你为什么要这么做?

也许你不是想这样的:

var facts = [String:[String:String]](); 

func answerTemplate(answerOne:String, answerTwo:String, answerThree:String, answerFour:String, factNumber:String) { 
    facts[factNumber] = ["A": "\(answerOne)", "B": "\(answerTwo)", "C": "\(answerThree)", "D": "\(answerFour)" ] 
} 

我也想不明白,为什么你是从一个数组调用该函数:

let answerArray = [ 

    answerTemplate("Beach", "Crickets", "Pac-Man", "Banging", "one"), 
    answerTemplate("Zipper", "Tie", "Shoe Lace", "Belt", "two"), 
    answerTemplate("New York", "North Carolina", "Massachusetts", "Rhode Island", "three") 
] 

这是没有意义的,如果你正在推动内容到目录无论如何。

相关问题