1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем angel-5, 3 май 2006.

Модераторы: Dark™, Skif
  1. Павел Ангелуш

    Павел Ангелуш Пользователь сайта

    С нами с:
    19.04.2006
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    2
    Проблема к доступу списка переменных (например `ls -sl`, filterExpand) которые получены в одной процедуре
    а использозовать надо в другой, global не работает.
     
  2. Ghostfly

    Ghostfly Активный участник

    С нами с:
    31.10.2005
    Сообщения:
    461
    Симпатии:
    0
    Баллы:
    16
    можно поподробней описать суть проблемы. Вроде всё просто - получил, записал, использовал где надо...
     
  3. Миша Ершов

    Миша Ершов Мастер

    С нами с:
    02.11.2003
    Сообщения:
    1.415
    Симпатии:
    2
    Баллы:
    325
    У каждой переменной есть определённая область видимости.
    Если переменная была определена в пределах {} скобок, то за пределами этих скобок она видна не будет. Кроме того, после обработки информации из т.н. блока (код между двумя {}) информация о переменной и её значении будет стёрта из памяти, т.е. она перестаёт существовать.
     
  4. newfych

    newfych Активный участник

    С нами с:
    16.02.2006
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    5
    в круглых скобках нада указать требуемое тебе количество переменных, и внутри процедуры присвоить им значения
     
  5. Павел Ангелуш

    Павел Ангелуш Пользователь сайта

    С нами с:
    19.04.2006
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    2
    Михаилу Ершову. Так вот как обойти эту особенность, необходимо из функции выдать несколько переменных, которые можно использовать из нескольких функций, при этом уже первую функцию использовать не имеет смысла
     
  6. Puppet

    Puppet Активный участник

    С нами с:
    20.05.2004
    Сообщения:
    546
    Симпатии:
    17
    Баллы:
    19
    Использовать глобальные переменные.
     
  7. Миша Ершов

    Миша Ершов Мастер

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

    zalexus Активный участник

    С нами с:
    27.10.2005
    Сообщения:
    362
    Симпатии:
    0
    Баллы:
    13
    Ты просто неправильно используешь global
    необходимо глобал переменные объявлять в каждой процедуре.
    т.е. пример

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

    $myVar = `ls -sl`;
    }

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



    Вроде ниче не забыл :))))
     
  9. Павел Ангелуш

    Павел Ангелуш Пользователь сайта

    С нами с:
    19.04.2006
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    2
    Спасибо zalexus, все получилось, именно так.
     
  10. Юрий.

    Юрий. Активный участник

    С нами с:
    27.03.2006
    Сообщения:
    44
    Симпатии:
    0
    Баллы:
    5
    Вдогонку. Я передавал переменные из процедуру в процедуру списком. Например:
    else
    {
    chemmod3($buf2,$buffer,$x,$y,$z);
    }



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

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

     
Модераторы: Dark™, Skif

Поделиться этой страницей