Можете ли вы хранить функции в массиве и вызывать их по мере необходимости? - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в программировании (1 неделя), так что это может быть глупый вопрос, но здесь идет ...

Используя Swift (в программе XCode), я определил некоторые функции (Func1, Func2 и т. Д.), Которые принимают массив целых чисел и меняют определенные значения в массиве. Я попытался создать новый отдельный массив, который содержит Func1, Func2 и т. Д., А затем я хотел бы, основываясь на случайно сгенерированном числе (например, 10204), применять функции по мере необходимости.

Так, например, число 10204 будет применять Func1, Func0, Func2, Func0, Func4 к массиву.

Я пытался найти другие вопросы на этом сайте в поисках идей, но, похоже, ничего не помогло, несмотря на многочисленные попытки. Вот что я пытаюсь сделать - эти две функции манипулируют целыми числами в массиве с именем "cubePos"


func UC(){
        (cubePos[0] , cubePos[17])
        =
        (cubePos[17] , cubePos[19])
}

func DC(){
        (cubePos[26] , cubePos[41])
        =
        (cubePos[41] , cubePos[43])
}

Обе эти функции работают нормально, когда я сам их применяю. Это то, что мне нужно сделать дальше, определить массив функций:

var arrOfFuncs = [UC , DC]

, а затем, учитывая число, например 10110, выполнить для "cubePos" эквивалент:

DC
UC
DC
DC
UC

Когда я ставлю что-то вроде:

arrOfFuncs[0]

Я ожидаю, что код будет применять UC () к массиву "cubePos", но, похоже, ничего не происходит, несмотря на то, что UC () работает нормально при вводе вручную в код.

Надеясь, кто-то может помочь!

1 Ответ

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

Вы не опубликовали код, который используете в своем вопросе, поэтому я создал базовый пример, который работает.Вы можете попробовать использовать приведенный ниже код.

func one() {
    print("Hello 1")
}
func two() {
    print("Hello 2")
}

let arr = [one, two]

arr[0]

"10101".forEach {
    arr[Int(String($0))!]()
}
...