Опрос
Что такое, по вашему мнению, «демократия»?
Обновлено 29.06.2010 04:26
Язык MEL для программистов
29.06.2010 04:20
Администратор
Язык 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
Принятие во внимание 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
Поиск
В закладку
Авторизация
Погода



Комментарии
http://infoprog.tk – программировани е для начинающих и программировани е для чайников
RSS лента комментариев этой записи.