curve -p ($x) ($y) 0 -a “myCurve”;

}

Первая строка содержит выражение if (…) {…}, логика выполнения которого следующая. Набор команд в фигурных скобках исполняется только тогда, когда логическое выражение в круглых скобках после if является истинным, то есть логически выполняется. В данном случае это выражение звучит так: «равен ли единице результат, возвращаемый командой obj Exists».

Если «да, равен», то выполняется блок команд в фигурных скобках, если «нет, не равен», то ничего не происходит, так как отсутствует оператор else, определяющий действия «в противном случае».

Важное замечание. Двойное равно ■■==» - это не опечатка, это логическое «равно». Дело в том, что по-русски одинаково звучат оба нижеследующих выражения: выражение $а=$Ь (то есть «$а равно $Ь, значение $Ь присвоить переменной $а») и логическое выражение if($a==$b) («если $а равно $Ь»), В английском языке в этих случаях употребляют разные слова: “assign” (присвоить) и “equal”(paBHO), соответственно. На языке MEL это все обозначается как «=» (присвоить) и «==>* (равно ли?).

Опасность состоит в том, что если вы пропустите один знак «равно» в логическом выражении и напишете где-нибудь if($i=1), то MAYA даже не выругается, а вместо этого присвоит единицу переменной $i (чего вы вовсе не хотели) и выполнит все команды после if, так как посчитает выражение ($i=1) истинным, то есть равным единице.

Поэтому будьте максимально внимательны при записи логического двойного «равно». К счастью, остальные логические операции сравнения (меньше - «<», больше - «>», не равно - «!=») не требуют такой концентрации внимания.

Некоторые деструктивные умы воскликнут: «А почему бы просто не попытаться удалить объект myCurve в любом случае перед началом выполнения скрипта?!». Ответ кроется в том, что если кривая myCurve не существует, команда удаления выдаст ошибку и скрипт остановится.

Косметическое примечание. В целях экономии места и удобочитаемости я написал фигурные скобки после if в этой же строке, хотя мог бы написать и следующим образом:

if (obj Exists (“myCurve")==1)

{

delete “myCurve”;

}

Напоминаю: в одной строке может быть сколько угодно команд; главное, чтобы они корректно отделялись друг от друга точкой с запятой. Фигурные скобки могут располагаться в любом месте строки и не требуют после себя точки с запятой. Дополнительные отступы в начале строки также не влияют на выполнение команд, но радикально улучшают внешний вид программы, позволяя визуально выделять наборы команд, принадлежащие циклам или блокам if.

Для взрослых. Хорошо осведомленные взрослые мальчики уже сообразили, что «==1» можно не писать, так как результат, возвращаемый командой objExists равен нулю или единице, а результат сравнения с единицей тоже равен нулю (нет) или единице (да). Совсем недисциплинированные программисты знают также, что фигурные скобки можно не писать, если в блоке находится только одна команда

if(objExists(“myCurve")) delete “myCurve”; Использование различных функций Теперь можно выполнять скрипт, не заботясь о предварительном удалении кривой myCurve. Чуть-чуть оптимизируем наш построитель графиков. Чтобы операция деления в цикле не выполнялась два раза одинаковым образом, сохраним результат первого деления в переменную и используем ее дальше как параметр для построения графика функции.


⇐ вернуться назад | | далее ⇒