First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

GoSub и локальные переменные

0

exten = _X.,1,Set(MYVAR=1)

exten = _X.,n,GoSub(MainDial,${EXTEN},1)

Будет ли в MainDial видна переменная ${MYVAR}? Или передавать переменные можно в GoSub только в качестве аргументов? И работать с ${ARGn}? С вызовом макросов такая же ситуация?

Я думаю, что так нельзя.

И самый главный вопрос про локальные переменные.

В рамках одного контекста, при использовании GoSub для перехода по экстеншенами, остаются ли доступными переменные установленные через Set?

спросил Apr 16 '15

анонимный пользователь

Аноним

обновил Apr 16 '15

Comments

Может это будет больше похоже на придирчивость , но почему бы это просто не проверить?

zzuz (Apr 16 '15)edit

+1 к zzuz

вы наверняка дольше сообщение тут писали, чем просто взяли бы и проверили сами

virus_net (Apr 17 '15)edit

2 Ответа

1

будет. видимость переменных оредляется не контекстом а каналом.

ссылка удалить спам редактировать

ответил Apr 16 '15

komrad123 Gravatar komrad123
3810 5 3 44

Comments

видимость переменных определяется их типом. например переменные макроса невидны после выхода из макро, а глобальные видны во всех каналах одновременно.

meral (Apr 16 '15)edit
1

в диалплане астериска нет локальных переменных.

есть переменные канала, обычно они используются.

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

есть shared. доступны только через func_SHARED

есть глобальные. доступны через функцию GLOBAL(VAR)

есть переменные макроса(ARG1,ARG2,ARG3) - выставляются при вызове макроса.

gosub никак не влияет ни на какие из этих классов.

ссылка удалить спам редактировать

ответил Apr 16 '15

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Apr 16 '15

Просмотрен: 637 раз

Обновлен: Apr 16 '15

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.