Render.ru

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

Paul_Winex

Знаток
Рейтинг
20
#1
Приветы. есть вопрос по принципам писания максоскрипта.
Пример кода:

Код:
fn procFirst f= 
(
    print f
    f = f+1
    procSecond f
)

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

Paul_Winex

Знаток
Рейтинг
20
#2
Появился вариант такой:

Код:
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
То есть объявить имена процедур в самом начале как глобальные. Кажется помогает.
 
Сверху