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

Перекрестный вызов процедур

Тема в разделе "MAXScript", создана пользователем Paul_Winex, 21 июн 2012.

Модераторы: Savin Denis
  1. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Приветы. есть вопрос по принципам писания максоскрипта.
    Пример кода:

    Код:
    fn procFirst f= 
    (
        print f
        f = f+1
        procSecond f
    )
    
    fn procSecond f = 
    (
        if f < 10 do procFirst f
    )
    procFirst 1
    
    Данный скрипт не сработает, так как вторая процедура вызывается в первой раньше чем она написана в скрипте. Если вторую поместить выше, до первой, то первая сработает, но вторая уже слетит (если макс только что перезагружен), так как первая написана ниже чем она вызвалась. Этот мегакосяк уж очень глупо выглядит. Быть может есть способ както закешить все процедуры до исполнения всего скрипта? Так как перекрестного вызова мне не лишиться, рекурсия там. А такой имеющийся метод срабатывает только со второго раза, а надо с первого!
     
  2. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Появился вариант такой:

    Код:
    global procSecond
    global procFirst
    
    fn procFirst f= 
    (
        print f
        f = f+1
        procSecond f
    )
    fn procSecond f = 
    (
        print f
        if f < 10 do procFirst f
    )
    
    procFirst 1
    
    То есть объявить имена процедур в самом начале как глобальные. Кажется помогает.
     
Модераторы: Savin Denis

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