Как обратиться к переменным созданным через :execute ":global e 555"
Добавлено: 20 авг 2018, 20:36
Код: Выделить всё
#1. Стандарт
:global a 111;
:log info "1. Variable ($a)";
#2. Стандарт
:global b;
:set $b 222;
:log info "2. Variable ($b)";
#3. Вероятно создается :local переменная,
# можно обратиться в скрипте,
# но не сохраняется в environment
:execute [:set $c 333];
:log info "3. Variable ($c)";
#4. Есть в env, не получается обратиться.
:execute [:global d 444];
:log info "4. Variable ($d)";
#5. Есть в env, не получается обратиться.
:execute ":global e 555";
:execute [:log info "5. Variable ($e)"];
#6. Есть в env, не получается обратиться.
[:parse ":global f 666"]
:log info "6. Variable ($f)";
Код: Выделить всё
> /log print
script,info 1. Variable (111)
script,info 2. Variable (222)
script,info 3. Variable (333)
script,info 4. Variable ()
script,info 5. Variable ()
script,info 6. Variable ()
Код: Выделить всё
> /environment print
a=111
b=222
d=444
e=555
f=666
Необходимость такой конструкции возникает, когда надо создать глобальную переменную имя которой создано конкатенацией, особенно актуально внутри циков foreach.
Парадокс, но переменная в /environment создается, а обратиться к ней не выходит.
Справедливо для ROS 6.42.6:
912UAG-2HPnD
2011UiAS-2HnD
К слову с утра вышла ROS 6.42.7, на ней ещё не проверял.