Читайте также:
|
|
Часто бывает необходимо сгруппировать несколько простых выражений в одно. Для этого группу объединяемых выражений заключают в круглые скобки. Выражения, составляющие сложное, или как его еще называют, блоковое выражение, обычно записываются каждое на новой строке, например
(x = 6
y = 7
z = 10
)
но допускается записывать их и на одной, разделяя знаком “; ”
(x = 6; y = 7; z = 10)
Можно так же смешивать обе формы записи
(x = 6
y = 7; z = 10)
Блоковое выражение возвращает результат последнего выполненного в нем простого выражения. Например, после выполнения такого скрипта
a = (x = 6; y = 7; z = 10)
переменная a получит значение 10.
Допускается, как это ни странно, пустое блоковое выражение, которое возвращает значение undefined, и записывается так
a = ()
Применять его можно для временной записи, с тем, чтобы после отладки остальной части скрипта, вернуться к нему и вписать туда то, что нужно.
При работе с блоковыми выражениями следует быть внимательным с локальными переменными, и вдвойне, если блоковые выражения вложены друг в друга. Рассмотрим пример
a = 1
(local a = 2
print a
(local a = 3
print a
)
print a
)
print a
В результате выполнения такого скрипта, на экране интерпретатора появится следующий результат
1 -- Первая строка
2 -- Вторая строка
3 -- Третья строка
3 -- Четвертая строка
3 -- Пятая строка
1 -- Шестая строка
1 -- Седьмая строка
В первой строке выведен результат присвоения единицы глобальной переменной a. Далее начинается блоковое выражение, в котором объявляется локальная переменная a. Ей присваивается значение 2, которое и выводится на экран функцией print. Результат выведен во второй строке. После этого снова начинается блоковое выражение второго уровня вложенности, в котором определяется локальная переменная а, ей присваивается значение 3, которое выводится на экран, см. третью строку. Затем второе блоковое выражение завершается, и логично было бы ожидать, что переменная a вернется к старому значению 2. Ничуть не бывало, и значение в четвертой строке красноречиво свидетельствует об этом. Как видите, она сохранила значение 3. В пятой строке выведен результат, возвращенный блоковым выражением после его завершения. Вот теперь переменная a вернется к своему старому значению 1, и напечатает его в шестой строке. Седьмая строка – результат, возвращенный функцией print.
Хорошим тоном программирования считается явно объявлять все локальные переменные, использованные в блоковом выражении с помощью операции local в первой строке этого выражения.
Следует так же отметить, что MAXScript поддерживает неявное объявление переменных, что так же может быть источником ошибок. Например
(local VariableWithVeryLongName
VariableWithVeryLongNam = 1
x = sin VariableWithVeryLongName
)
Объявление переменной с очень длинным именем VariableWithVeryLongName локальной не спасает нас от того, что при присвоении ей значения можно ошибиться в названии. Языки Паскаль или C выдали бы ошибку на этом операторе, но MAXScript спокойно заводит новую локальную переменную с ошибочным именем. При использовании уже верного написания переменной можно получить сколь угодно неожиданные результаты. Если, как в приведенном примере, выражение короткое, то найти ошибку не составит труда. В более длинном и сложно организованном выражении это может стоить времени и нервов.
Дата добавления: 2015-10-31; просмотров: 113 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Выражения сравнения | | | Контекстные выражения |