Опрос

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













Результаты команд

15.01.2010 11:44 Администратор
Печать PDF
Рейтинг пользователей: / 0
ХудшийЛучший 
Индекс материала
Результаты команд
Страница 2

Необходимо различать способы получения результатов команд. Получение значений, возвращаемых процедурами, совершенно очевидно. Если, к примеру, у вас есть процедура getUserName(), которая возвратит имя текущего пользователя, вы можете вызвать ее следующим образом: $userName = getllserName(); Значение, возвращаемое процедурой, будет присвоено переменной $userName. Однако если вы хотите получить выходное значение команды, вызывать ее напрямую нельзя. Команда currentTime служит для запроса текущего времени.

Используя ее непосредственно, как показано ниже, вы получите ошибку. $time = currentTime - q; Команда должна помещаться в одинарные обратные кавычки ('). $time = 'currentTime - q"; Тогда Maya произведет вычисления над текстом в 1савычках и вернет результат. Затем его можно сохранить в переменной $time. Распространенная оплошность - нечаянно поместить оператор в апострофы, или одинарные прямые ('), а не обратные кавычки {').

Применение апострофов ведет к синтаксической ошибке. Команда eval Язык MEL содержит очень мощное, но малоизвестное средство - команду eval. Она позволяет на лету формировать цепочки команд и выполнять их средствами Maya, Это означает, что ваши сценарии на, языке MEL могут генерировать операторы, которые затем выполняются. В других неинтерпретируемых языках подобной возможности не существует. Взамен вам пришлось бы написать код, который затем прошел бы обычные стадии компиляции-сборки, делающие новый код доступным для выполнения. Рассмотрим следующий оператор, где складываются два числа, float $res = 1 + 2 ; print $res; Что если вы хотите разрешить своим пользовате:1ям производить собственные вычисления?

Поскольку заранее вы не знаете, каковы могут быть их желания, непосредственно в виде сценария вам не удастся записать ничего. Однако вы можете воспользоваться командой eval, предназначенной для выполнения пользовательских операторов во время работы. Далее описана процедура, которая принимает на вход оператор, а затем выполняет его. global proc calc ( string $statement ) float $res = eval("float $_dummy = " + $statement); print (" " + $statement + " = " + $res); Теперь пользователи могут вводить в окне Script Editor и выполнять следующие операторы: calcC "1 + 2" ); calc( "10 * 2 / 5 " ); Процедура выведет такие результаты: 1 + 2 = 3 10 * 2 / 5 = 4 Операторы были сформированы на лету, после чего выполнены.



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


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

Поиск

В закладку

 
 

Авторизация



Погода