Вход

Просмотр полной версии : Указатель на функцию


Stary
06.01.2003, 18:13
Привет всем.

Задача такая - имеется указатель на функцию (текстовая переменная, в которой хранится имя функции - ну к примеру MyVariable="MyFunction()"). Теперь нужно взять эту переменную и вызвать функцию, на которую она указывает (то есть MyFunction() ).

Аналог - вызов переменной по указателю делается с помощью eval(MyVariable). А тут никак не могу подобрать синтаксис, чтобы срабатывало.

Спасибо.

DeliMIter
06.01.2003, 18:33
functionName = "blood";
this[functionName]();

function blood() {
trace("Lots of BLOOD!!!");
}

Stary
06.01.2003, 18:40
Спасибо. Да, все получается. Правда, я хотел хранить в указателе и аргументы, но это не проблема, конечно. Придется их приклеивать отдельно.

Nox Noctis
06.01.2003, 18:42
можно и
eval(name)();

...но так, как написал делимитер - лучше

а если хочется извратиться с аргументами - можно можно строковыми функциями все расковырять...
только зачем - не понимаю... это получается что ты парсишь строку ради того чтобы вызвать функцию...

Stary
06.01.2003, 18:52
Nox Noctis, пожалуй так, как ты предлагаешь удобно делать, когда путь полностью хранится в указателе. Я был уверен, что пробовал этот вариант и безуспешно, но оказалось, что не догадался :)

Насчет аргументов - задача была такая - один мувик-прелоадер вызывается нужное число раз (с помощью аттача). При этом он осуществляет индикацию загрузки разных типов данных (если быть точнее - мувиков и xml-объектов). Каждый раз при вызове управляющая функция передает прелоадеру ряд аргументов (имя объекта, тип данных для текстовых сообщений и т. д.), в том числе - указатель на функцию с перечнем аргументов, которую надо запустить по окончанию загрузки. Если не парсить строку, то эти аргументы нужно передавать отдельно. Дело в том, что я еще не знаю - сколько и какие будут эти функции и сколько аргументов будет у каждой.

Nox Noctis
06.01.2003, 19:18
если ты пишешь в МХ, то из любой функции ты можешь получить массив переданных ей аргументов при помощи указателя arguments...
так что количество аргументов - не проблема, главное описать что с этими аргументами делать...

Stary
06.01.2003, 20:09
Действительно. Об этом я не подумал как-то. А что, в пятом это не работает?

DeliMIter
06.01.2003, 20:34
Не очень :D

[subway]design
06.01.2003, 22:14
arguments в пятерке прекрасно работают.

DeliMIter
06.01.2003, 22:57
Андокументед полный :cool:

[subway]design
07.01.2003, 00:27
но ведь работают :)