Инициализация глобальной переменной требует постоянного значения - PullRequest
0 голосов
/ 14 мая 2018

Я уже некоторое время пытаюсь найти ответ на эту проблему и до сих пор не могу найти корень своей проблемы.

Я работаю с процедурами в maya (mel), иМне очень трудно использовать global variables как средство для сохранения данных между различными процедурами.

Моя главная проблема представлена ​​здесь:

В первом примереЯ могу заменить уже объявленный global variable внутри процедуры так, как мне нужно.

Но затем во втором примере при попытке изменить значение global variable он говорит, что процедуре нужно постоянное значение,

Кроме того, я пытался создать local variable только для того, чтобы потом передать его на global variable, но у меня все еще остается та же проблема.

global string $value[];

proc test()
{
    global string $value[] = {"door", "knob"};
    print ($value);

}

test();

//Result: door, knob



global string $value[];

proc test()
{
    global string $value[] = `ls -sl`;
    print ($value);

}

test();

//Result: Initialization of global variable "$value" requires a constant value.

В ожидании возможных решений, уже много искал.

1 Ответ

0 голосов
/ 14 мая 2018

Попробуйте во втором процессе вместо этого:

 global string $value[];
 $value = `ls -sl`;

Сообщение сообщает о проблеме - ls -sl не является постоянным значением, оно будет отличаться каждый раз.поэтому вы не можете использовать его в качестве начального значения глобала - процесс не знает, что $value еще существует, поэтому он пытается создать новый, а MEL не хочет, чтобы вы его создавалиновый глобал с непостоянным значением.

В любом случае рекомендуется не объявлять и не заполнять глобальное значение одновременно, если только вы не планируете оставить его постоянным или хотите получить предсказуемое значение по умолчанию.Вот почему MEL хочет, чтобы вы отделили декларацию от присвоения.

...