Здавалка
Главная | Обратная связь

Operator, PreOperator, PostOperator



Эти ключевые слова предназначены для объявления особого вида функций, называемых операторами (эквивалентных операторам C++). Компилятор UnrealScript знает обо всех встроенных операторах, таких как "+", "-", "==", "||" и т.д. Если не вдаваяться в подробности, то операторы UnrealScript похожи на операторы C++ и вы можете объявить новые операторы, как функции UnrealScript или встроенные функции, применяя ключевые слова operator, preoperator и postoperator.

Event

Ключевое слово event в UnrealScript имеет то же значение, что и как функция function. Однако, при экспорте заголовочного файла C++ с использованием =unreal -make -h, UnrealEd автоматически генерирует для "события" заглушку вызова из C++ в UnrealScript, что автоматически синхронизирует код на C++ с функциями UnrealScript и исключает возможность передачи ошибочных параметров в функции UnrealScript. Рассмотрим следующий участок кода UnrealScript.:

event Touch( Actor Other )

{ ... }

Создает код на C++ в EngineClasses.h, подобный следующему:

void eventTouch(class AActor* Other)

{

FName N("Touch",FNAME_Intrinsic);

struct {class AActor* Other; } Parms;

Parms.Other=Other;

ProcessEvent(N, &Parms);

}

Это позволяет вам вызвать функцию UnrealScript из C++ следующим образом:

AActor *SomeActor, *OtherActor;

SomeActor->eventTouch(OtherActor);


Const

  Это спецификатор добавляется после объявления функции и может быть использован только в объявлении встроенной функции. Указывает, что функция должна быть экспортирована в заголовочный файл как 'const'. Пример использования:

native function int doSomething(string myData) const;

Управляющие структуры

Язык UnrealScript поддерживает все стандартные операторы управления выполнением языков C, C++ и Java:

Структуры повторения

Циклы for

Циклы "For" позволяют выполнять цикл до тех пор, пока не будет выполнено определенное условие. Например:

// Example of "for" loop.

function ForExample()

{

local int i;

log( "Demonstrating the for loop" );

for( i=0; i<4; i++ )

{

log( "The value of i is " $ i );

}

log( "Completed with i=" $ i);

}

В результате работы этого цикла мы получим вывод:

Demonstrating the for loop

The value of i is 0

The value of i is 1

The value of i is 2

The value of i is 3

Completed with i=4

В цикле for вы должны указать три выражения, разделенные точкой с запятой. Первое выражение для инициализации переменной в исходное значение. Второе выражение содержит условие, проверяемое перед выполнением каждой итерации цикла, если это выражение истинно, цикл выполняется, а если оно ложно, цикл завершается. Третье условие содержит выражение, увеличивающее счетчик цикла.

Хотя большинство выражений цикла "for" просто обновляют счетчик, вы также можете использовать циклы "for" для более расширенных операций, например, для обхода связанных списков, с помощью соответствующей инициализации исходного значения, условия прекращения и величины прироста.

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

for( i=0; i<4; i++ )

log( "The value of i is " $ i );

Или же вы можете выполнить несколько операций, заключив их в фигурные скобки, например:

for( i=0; i<4; i++ )

{

log( "The value of i is" );

log( i );

}

Циклы do

Циклы "do" позволяют вам выполнять цикл пока указанное вами окончательное выражение истинно. Обратите внимание, что Unreal использует синтаксис do-until, который отличается от синтаксиса языков C и Java (использующих do-while).

// Example of "do" loop.

function DoExample()

{

local int i;

log( "Demonstrating the do loop" );

do

{

log( "The value of i is " $ i );

i = i + 1;

} until( i == 4 );

log( "Completed with i=" $ i);

}

В результате работы этого цикла мы получим вывод:

Demonstrating the do loop

The value of i is 0

The value of i is 1

The value of i is 2

The value of i is 3

Completed with i=4

Циклы while

Циклы "while" позволяют вам выполнять цикл пока указанное вами начальное выражение истинно.

// Example of "while" loop.

function WhileExample()

{

local int i;

log( "Demonstrating the while loop" );

while( i < 4 )

{

 

log( "The value of i is " $ i );

i = i + 1;

}

log( "Completed with i=" $ i);

}

В результате работы этого цикла мы получим вывод:

Demonstrating the do loop

The value of i is 0

The value of i is 1

The value of i is 2

The value of i is 3

Completed with i=4

Оператор continue

Команда "continue" перемещает поток выполнения в начало цикла, а все, что находится после нее, выполнено не будет. В некоторых случаях это может быть использовано для пропуска участка кода цикла.

function ContinueExample()

{

local int i;

log( "Demonstrating continue" );

for( i=0; i<4; i++ )

{

if( i == 2 )

continue;

log( "The value of i is " $ i );

}

log( "Completed with i=" $ i );

}

В результате работы этого цикла мы получим вывод:

Demonstrating continue

The value of i is 0

The value of i is 1

The value of i is 3

Completed with i=4

Оператор break

Команда "break" осуществляет выход из текущего цикла ("For", "Do" или "While").

function BreakExample()

{

local int i;

log( "Demonstrating break" );

for( i=0; i<10; i++ )

{

if( i == 3 )

break;

log( "The value of i is " $ i );

}

log( "Completed with i=" $ i );

}

В результате работы этого цикла мы получим вывод:

Demonstrating break

The value of i is 0

The value of i is 1

The value of i is 2

Completed with i=3

Обратите внимание, что команда "break" также может быть использована для пропуска оставшейся части условного оператора ("switch").

Структуры выбора







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.