Обратитесь к массиву на основе строкового вывода - PullRequest
0 голосов
/ 11 апреля 2019

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

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

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

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

// 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 Ответ

0 голосов
/ 11 апреля 2019

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

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)
}
...