Return/ru
< Return
Jump to navigation
Jump to search
Revision as of 09:56, 21 July 2013 by Strife Onizuka (talk | contribs)
LSL Портал | | | Функции | | | События | | | Типы | | | Константы | | | Потоки | | | Библиотека Скриптов | | | Учебники |
- The correct title of this article is return/ru. The initial letter is shown capitalized due to technical restrictions.
return
value;
return
value; • type | value
|
– | Возвращаемое функцией значение или переменная, тип должен быть тем же, что возвращается функцией. |
Используется для исполнения возврата в предыдущую область видимости вместе со значением.
Функции
- Выход из функции и продолжение выполнения скрипта в предыдущей области видимости.
События
- Предпосылка скрипта к падению. События не могут возвращать значения. Используйте следующую форму ключевого слова вместо этой.
return
;
Используется для преждевременного возврата выполнения в предыдущую область видимости перед достижением окончания функции/события. Нет потребности использовать в конце события или функции, так как предполагается завершение компилятором.
Функции
- Выход из функции и продолжение выполнения скрипта в предыдущей области видимости.
События
- Выход из событий и удаление из очереди событий. Если есть еще одно событие в очереди - оно срабатывает.
Caveats
Предостережения
- Есть ошибка в компиляторе и это позволит вам возвращать значение с событиями, которые при конфликте во время выполнения приведут скрипт к падению.
- Не пытайтесь возвращать значение в области видимости событи - если не хотите получать падения скрипта.
Examples
Примеры <lsl>integer Goodbye() {
llOwnerSay("Goodbye"); return 0;
}
Hello() {
llOwnerSay("Hello"); return;
}</lsl> <lsl> integer Calc (string cmd, integer a, integer b) {
// Пользовательская функция была объявлена как возвращающая integer, // следовательно каждый возврат функции должен возвращать integer
if (cmd == "+") return a + b; // Нет нужды здесь в коде 'else', так как предыдущий оператор привел к 'return' при "true"
if (cmd == "-") return a - b; if (cmd == "*") return a * b; if (cmd == "/") return a / b; // Нужно возвращать значение и здесь, мы не можем опустить окончательного return (возвращения)
return -1;
} default {
state_entry() { llSay(0, llList2CSV ( [ Calc("+",1,2), Calc ("-",5,3), Calc ("*",3,4), Calc("/",18,6) ] ) ); }
} </lsl>