#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! Это многое значит для вас!