如何根据函数参数动态更改字典名称?

时间:2014-09-20 10:39:55

标签: ios swift

基本上我正在尝试制作一个简单的测验应用,而不是写出每个问题,我试图通过编写一个函数来加速它,然后为我创建它。

这是我到目前为止所拥有的

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

正如您所看到的,我正在尝试将字典名称更改为事实+问题的编号但是这给了我一个错误“一行上的连续语句必须由a分隔。”。

反正有没有这样每次创建函数时都会创建一个带有动态名称的字典?

这是我试图创建它们的方式:

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")
]

如果没有,是否还有另一种方法可以完成我在这里尝试做的事情?

1 个答案:

答案 0 :(得分:0)

您无法在Swift中在运行时声明任何变量。 (你想做什么。)

你为什么要这样做?

也许你反而想要这个:

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")
]

如果您将内容推送到目录中,那是没有意义的。