Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Спецификаторы параметров функций

Преобразование ссылок на объекты и классы | Private, Protected | Выражения case | Встроенные операторы и их приоритет | Создание объектов | Отладчик сценариев | Определение значений по умолчанию с использованием блока defaultproperties | Динамические массивы | Итераторы динамических массивов | Доступные спецификации метаданных |


Читайте также:
  1. a. Дисметаболические и токсико-метаболические нарушения функций ЦНС
  2. Аппроксимация экспериментальных данных с помощью встроенных функций
  3. Блок 3 Использование функций
  4. Виды диагностических параметров
  5. ВИДЫ ДИАГНОСТИЧЕСКИХ ПАРАМЕТРОВ (ДП)
  6. Влияние оптических параметров на процесс лазерной резки
  7. Возрастные особенности психофизиологических функций

Когда вы просто вызываете функцию, UnrealScript делает локальные копии всех переданных вами параметров. Если функция изменяет некоторые параметры, то это не отражается на значениях переменных, которые вы передали. Например, следующая программа:

function int DoSomething(int x)

{

x = x * 2;

return x;

}

function int DoSomethingElse()

{

local int a, b;

 

a = 2;

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

 

b = DoSomething(a);

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

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

}

При вызове функции DoSomethingElse производится вывод следующих значений:

The value of a is 2

The value of a is 2

The value of b is 4

Другими словами, функция DoSomething работает с локальной копией переменной "a" и не влияет на реальное значение переменной "a".

Спецификатор out позволяет указать функции, что она должна изменить значение передаваемой переменной, вместо того значения локальной копии. Это полезно, например, если у вас есть функция, которая должна возвращать несколько значений. Вы можете указать спецификатор out для нескольких параметров функции, например:

// Compute the minimum and maximum components of a vector.

function VectorRange(vector V, out float Min, out float Max)

{

// Compute the minimum value.

if (V.X<V.Y && V.X<V.Z) Min = V.X;

else if(V.Y<V.Z) Min = V.Y;

else Min = V.Z;

 

// Compute the maximum value.

if (V.X>V.Y && V.X>V.Z) Max = V.X;

else if(V.Y>V.Z) Max = V.Y;

else Max = V.Z;

}

Без ключевого слова out будет сложно написать функцию, которая должна возвращать более одного значения. Выходные параметры передаются по ссылке, так что изменения значения параметра в функции отражаются и на значении оригинала. Это также может быть использовано для оптимизации передачи больших значений, подобно указанию "const out" в C++.

С ключевым словом optional вы можете сделать определенные параметры функции необязательными. В функциях языка UnrealScript необязательные параметры, для которых при вызове не указывается значение, устанавливаются в значения по умолчанию, указанное в объявлении функции, или в ноль (например, 0, false, "", none), если значения по умолчанию не были указаны в объявлении функции. Для встроенных функций значения по умолчанию для необязательных параметров зависят от функции. Например, функция Spawn принимает необязательные параметры location и rotation, которые принимают значения для размещения и ориентации актора. Значение по умолчанию для необязательных аргументов может быть указано добалением оператора присваивания и самого значения, например: function myFunc(optional int x = -1).

Ключевое слово coerce принудительно приводит передаваемые параметры к указанному типу (даже если в UnrealScript указанное преобразование не выполняется автоматически). Это полезно для функций, связанных со строками, где параметры автоматически преобразуются в строки. (Смотрите Строки в сценариях UnrealScript).


Дата добавления: 2015-11-14; просмотров: 47 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Объявление функций| Переопределение функций

mybiblioteka.su - 2015-2024 год. (0.005 сек.)