Render.ru

MEL, доступ к переменным из других процедур

Павел Ангелуш

Активный участник
Рейтинг
7
#1
Проблема к доступу списка переменных (например `ls -sl`, filterExpand) которые получены в одной процедуре
а использозовать надо в другой, global не работает.
 

Ghostfly

Активный участник
Рейтинг
19
#2
можно поподробней описать суть проблемы. Вроде всё просто - получил, записал, использовал где надо...
 

Миша Ершов

Модератор форума
Рейтинг
314
#3
У каждой переменной есть определённая область видимости.
Если переменная была определена в пределах {} скобок, то за пределами этих скобок она видна не будет. Кроме того, после обработки информации из т.н. блока (код между двумя {}) информация о переменной и её значении будет стёрта из памяти, т.е. она перестаёт существовать.
 

newfych

Активный участник
Рейтинг
5
#4
в круглых скобках нада указать требуемое тебе количество переменных, и внутри процедуры присвоить им значения
 

Павел Ангелуш

Активный участник
Рейтинг
7
#5
Михаилу Ершову. Так вот как обойти эту особенность, необходимо из функции выдать несколько переменных, которые можно использовать из нескольких функций, при этом уже первую функцию использовать не имеет смысла
 

Миша Ершов

Модератор форума
Рейтинг
314
#7
2 angel-5:
Как сказал Puppet, используйте глобальные переменные.
А лучше просто разберитесь с принципом работы процедур. Там всё очень просто.
И ещё. Если Вы собираетесь заниматься программированием, то я очень рекомендую приобрести книгу Д. Гоулда - "Полное руководство по программированию на MEL". Она должна быть на озоне. Эта книга даёт превосходную базу для начинающего программиста.
ps: ну и про F1 не забывайте.
 

zalexus

Активный участник
Рейтинг
13
#8
global не работает.
Ты просто неправильно используешь global
необходимо глобал переменные объявлять в каждой процедуре.
т.е. пример

proc getSelection()
{
global string $myVar[];

$myVar = `ls -sl`;
}

proc showMyVar()
{
global string $myVar[]; // обязательное объявление глобальной переменной для её использования.
print $myVar;
}



Вроде ниче не забыл :))))
 

Юрий.

Активный участник
Рейтинг
5
#10
Вдогонку. Я передавал переменные из процедуру в процедуру списком. Например:
else
{
chemmod3($buf2,$buffer,$x,$y,$z);
}



global proc chemmod3(string $buf2,string $buffer[],float $x, float $y, float $z)
{

Причём chemmod3 - это отдельный файл MEL.

 
Сверху