2014-09-20 2 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

Что вы пытаетесь достичь с помощью 'let fact (" \ (factNumber) ")'? – idmean

+0

@wumm так сказать, например, я вставляю «четыре» в аргументы func, когда я его называю, что имя словаря будет «FactFour». – Harazzy

+0

Но почему вы верите, что это должно сработать? 'let' объявляет переменную, но то, что вы делаете, больше похоже на вызов функции. Или я чего-то не хватает? Где вы заявляете «факт»? – idmean

ответ

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

Это не имеет никакого смысла, если вы толкая содержимое в каталог в любом случае.

Смежные вопросы