Ссылка на массив на основе вывода строки

#arrays #swift

#массивы #swift

Вопрос:

Я изучаю Swift, когда иду сюда, поэтому прошу прощения, если это глупый вопрос.

Я хочу использовать вывод одной функции (строки) для определения входных данных в другую функцию (массив).

Затем вывод первой функции (строка) объединяется с другой строкой, чтобы сформировать имя уже определенного массива, который я хотел бы использовать в качестве входных данных для второй функции. Однако, несмотря на то, что строка имеет то же имя, она не рассматривается как массив.

Я пропустил часть кода, но соответствующий раздел ниже.

 // Defined array
let rushProb = [0,11,19,64,78,89,96,98,99,100]

// Define probability and outcome function - PlayType
func findPlay(prob: [Int], outcome: [String]) -> String {
    if let index = prob.firstIndex(where: { $0 > Int.random(in: 1...100) }) {
        return outcome[index]
    }
    else {
        return "na"
    }
}

// This is successfully output as "rush"
let playSel = findPlay(prob: scen1Prob, outcome: scenPlay)

// This then creates "rushProb"
let playSelProb = playSel "Prob"

// I want this to ultimately be findYards(prob: rushProb)
findYards(prob: playSelProb)
  

Комментарии:

1. имена переменных не имеют значения во время выполнения

Ответ №1:

Ну, вы могли бы использовать словарь, где ключ заменяет имя вашего массива, а значением является массив. Затем вы должны использовать созданное вами имя для поиска значения массива в словаре:

 let arrays = ["rushProb": [0,11,19,64,78,89,96,98,99,100],
              "fooProb" : [0,15,29,44,68,78,86,92,94,100]]

// This is successfully output as "rush"
let playSel = findPlay(prob: scen1Prob, outcome: scenPlay)

// This then creates "rushProb"
let playSelProb = playSel "Prob"

// look up the array that corresponds to "rushProb"
if let array = arrays[playSelProb] {
    findYards(prob: array)
}
  

Комментарии:

1. Добро пожаловать в 100K! Заслуженный

2. Спасибо @matt! Это многое значит для вас!