Что нового

параметр функции являющийся ссылкой на другую функцию

V

vladu

Гость
Добрый день,

возможно ли передать ссылку на функцию AA в виде параметра в функции BB?
И затем в функции ВВ вызвать функцию АА используя ссылающийся параметр?

Пример:
Код:
BB(AA)

Func АА()
EndFunc

Func ВВ($linkFunc)
     $linkFunc()
EndFunc


при реализации данного примера AutoIt ругался на строку "BB(AA)", в частности на сам параметр АА
==> Missing separator character after keyword.:

Возможно необходимо как-то подругому написать?


Заранее спасибо за помощь.
 
Автор
V

vladu

Гость
К сожалению в варианте BB(AA()) происходит вызов функции АА в момент вызова функции ВВ.
Но в функции ВВ делаю различные проверки, которые определяют необходимо вызывать функции АА или нет.

Пример 2
Код:
BB(AA, true)
BB(AA, false)

Func АА()
EndFunc

Func ВВ($linkFunc, $flag)
     If $flag Then
          $linkFunc()
     EndIf
EndFunc
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Ну и зачем извращeния?
Код:
Func ВВ($flag)
     If $flag Then
          AA()
     EndIf
EndFunc
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
vladu
Код:
BB("AA", true)
BB("AA", false)

Func АА()
EndFunc

Func ВВ($linkFunc, $flag)
     If $flag Then
          Execute($linkFunc & "()")
     EndIf
EndFunc
 
Автор
V

vladu

Гость
"Execute()" супер !

Medic84 спасибо за помощь !!!
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Не используйте Execute() там, где можно обойтись без этого.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
А Call уже не котируется?
Используется, если имя функции меняет своё значение или в функциях обратного вызова (в UDF), когда за ранее неизвестно какая функция будет обрабатываться
 
Автор
V

vladu

Гость
В данном случае решил использовать Call(),
хотя Execute() тоже очень вкусная функция :smile:
 
Верх