![]() |
Указатель на функцию
Привет всем.
Задача такая - имеется указатель на функцию (текстовая переменная, в которой хранится имя функции - ну к примеру MyVariable="MyFunction()"). Теперь нужно взять эту переменную и вызвать функцию, на которую она указывает (то есть MyFunction() ). Аналог - вызов переменной по указателю делается с помощью eval(MyVariable). А тут никак не могу подобрать синтаксис, чтобы срабатывало. Спасибо. |
Код:
functionName = "blood"; |
Спасибо. Да, все получается. Правда, я хотел хранить в указателе и аргументы, но это не проблема, конечно. Придется их приклеивать отдельно.
|
можно и
eval(name)(); ...но так, как написал делимитер - лучше а если хочется извратиться с аргументами - можно можно строковыми функциями все расковырять... только зачем - не понимаю... это получается что ты парсишь строку ради того чтобы вызвать функцию... |
Nox Noctis, пожалуй так, как ты предлагаешь удобно делать, когда путь полностью хранится в указателе. Я был уверен, что пробовал этот вариант и безуспешно, но оказалось, что не догадался :)
Насчет аргументов - задача была такая - один мувик-прелоадер вызывается нужное число раз (с помощью аттача). При этом он осуществляет индикацию загрузки разных типов данных (если быть точнее - мувиков и xml-объектов). Каждый раз при вызове управляющая функция передает прелоадеру ряд аргументов (имя объекта, тип данных для текстовых сообщений и т. д.), в том числе - указатель на функцию с перечнем аргументов, которую надо запустить по окончанию загрузки. Если не парсить строку, то эти аргументы нужно передавать отдельно. Дело в том, что я еще не знаю - сколько и какие будут эти функции и сколько аргументов будет у каждой. |
если ты пишешь в МХ, то из любой функции ты можешь получить массив переданных ей аргументов при помощи указателя arguments...
так что количество аргументов - не проблема, главное описать что с этими аргументами делать... |
Действительно. Об этом я не подумал как-то. А что, в пятом это не работает?
|
Не очень :D
|
arguments в пятерке прекрасно работают.
|
Андокументед полный :cool:
|
| Часовой пояс GMT +4, время: 12:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.