Опрос

Что такое, по вашему мнению, «демократия»?













Язык MEL для программистов

29.06.2010 04:20 Администратор
Печать PDF
Рейтинг пользователей: / 1
ХудшийЛучший 

Язык MEL происходит из UNIX shell scripting. Это означает, что MEL основан на выполнении завершающих команд, а не на управлении структурами данных, вызывающих функций или использовании объектно-ориентированных методов в отличие от других языков. Большинство команд для контроля Maya действуют также как утилиты UNIX, работающие в режиме командной строки: небольшие независимые программы, оснащенные возможностями для модификации.

Принятие во внимание shell scripting происхождение MEL поможет вам понять некоторые из необычных аспектов этого языка.

Обзор языка MEL

Присваивание и значения

Знак присваивания в MEL является знак равенства (=). MEL также включает ярлыки знаков присваивания таких как в C и Java (+=, -=, /=, *=, ++, --, etc.).

MEL - строго типизированный язык, однако в большинстве случаев он позволяет неявное объявление и типизацию. Когда вы объявляете переменную, вы также объявляете ее тип и можете присвоить ей первоначальное значение.

Названия переменных начинаются с $, затем следует буква, затем любая комбинация букв, чисел и нижних подчеркиваний. В отличие от PERL, все типы переменных  в MEL (простые и сложные) начинаются с $.

Язык MEL включает обычное целое (int), плавающую запятую (float) и строковый тип данных. Он также включает векторный тип данных, который представляет собой три плавающие запятые (которые могут быть полезны при работе с 3D данными), массивы (перечень разного размера с элементами одного типа) и матрицы (двухмерные таблицы фиксированного размера с плавающими запятыми). Все элементы в массиве должны быть одного типа.

int $a = 5;
float $b = 3.456;
vector $v = ;
float $ar[] = {1.2, 3.4, 4.5}; // An array of floats
matrix $mtx[3][2]; // A 3x2 matrix of floats

В MEL невозможно составить массив из массивов.
MEL автоматически конвертирует типы по мере возможности.

Оператор управления и организации циклов

Операторы управления MEL схожи с операторами управления C и Java.

if ( $a == $b) {
...
} else if ($a > $b) {
...
} else {
...
}
$a = ($b > 10) ? $c : ($c - 10);
switch ($color) {
case "blue":
...
break;
case $c1:
...
break;
default:
...
break;
}
while ($a < size($arry)) {
...
}
do {
...
} while ($a > 0);
int $i;
for ($i = 10; $i > 0; $i--) {
print($i+"...\n");
}
print("Blastoff!!!");
string $arry[3] = {"red","green","blue"};
for ($k in $arry) {
...
}

Процедура определения и запроса

Процедура, заданная пользователем, создается при помощи следующего синтаксиса:

global proc () {
...
return ;
}
global proc float squareAndAdd(float $x, float $y) {
return $x * $x + $y;
}
square(5.0, 2.0);
27

Если вы пропускаете основное ключевое слово, процедура доступна только в файле сценария, в котором она определяется.

Если процедура не возвращает значение, вам следует пропустить ключевое слово типа возврата функции и не включать оператора возврата.

global proc msg() {
print("Hello world\n");
}

Комментарии

MEL использует однострочные комментарии стиля C++ с предшествующим знаком // и комментарии свободного формата, выделяемые с двух сторон /*  */.

Программирование на языке MEL включает несколько аспектов, которые могут ввести в заблуждение не только начинающих, но и опытных программистов.

Каждое предложение в MEL должно заканчиваться точкой с запятой (;), даже в конце block.

if ($a > $b) {print("Hello");};
//

В отличие от некоторых скриптовых языков или сред (как и в языке Logo), если вы объявите выражение, которое возвращает значение, то это значение в языке MEL не будет автоматически распечатываться.

3 + 5;
// Error: 3 + 5; //
// Error: Syntax error //
print(3+5);
8

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

// Create a sphere named "mySphere" with radius 5
sphere -radius 5 -name "mySphere";
// Edit the radius of mySphere
sphere -edit -radius "mySphere";
// Print the radius of mySphere
sphere -query -radius


MEL позволяет печатать команду в синтаксисе команд и функциональном синтаксисе. В командном синтаксисе вы опускаете кавычки вокруг односложных строк и разделяете аргументы пробелами вместо запятых.

setAttr("mySphere1.translateX",10); // Function syntax
setAttr mySphere1.translateX 10; // Command syntax

Синтаксис функции автоматически возвращает значение. Чтобы получить обратное значение при помощи синтаксиса команд, вам необходимо заключить команду в обратную блокировку вычислений.

$a = getAttr("mySphere.translateX"); // Function syntax
$b = `getAttr mySphere.translateY`; // Command syntax

Обновлено 29.06.2010 04:26

Комментарии  

 
0 #1 16.08.2010 11:31
Спасибо, интересно! Будем читать дальше.
http://infoprog.tk – программировани е для начинающих и программировани е для чайников
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Поиск

В закладку

 
 

Авторизация



Погода