Добавлен , опубликован

vJass

Содержание:

На данный момент, мы можем присвоить переменной целочисленного типа значение типа структуры или же переменной типа одной структуры, присвоить значение типа другой структуры. Таким образом, мы указываем, каким именно образом компилятор будет воспринимать то или иное значение.
Чтобы преобразовать значение одного типа в значение другого типа, мы вынуждены каждый раз объявлять переменную, индивидуальную для каждой операции приведения. Это утомительно и потому был добавлен оператор приведения типов.
Синтаксис приведения одного типа к другому напоминает вызов функции, только вместо имени функции используется имя желаемого типа. В результате работы оператора, будет возвращено значение желаемого типа
interface MyInterface
    // прочее... 
endinterface

struct MyStruct extends MyInterface
   real x
   // прочее...
endstruct

function test takes MyInterface inter returns nothing
    // Вы уверены, что inter имеет тип MyStruct, и приводите его значение
    // к типу MyStruct следующим образом
    local MyStruct tmp = inter
    set tmp.x = 500.

    // Но бывает, что объявление переменной, это сильно больше работы
    // чем требуется, особенно если обратиться к объекту нужно лишь
    // единожды. Приведения типов с этой задачей справится лучше
    set MyStruct(inter).x = 500.
endfunction

type MyArray extends integer array[6]

function GetData takes unit u returns integer
    // Указатель на экземпляр типа MyArray ранее был сохранен в 
    // целочисленных данных юнита
    return MyArray(GetUnitUserData(u))[5]
endfunction

function SetData takes unit u, MyArray arr returns nothing
    // Здесь мы выполняем процесс приведения типа-массива к целому,
    // чтобы сохранить указатель на экземпляр массива в данных юнита
    call SetUnitUserData(u,  integer(arr))
endfunction

`
ОЖИДАНИЕ РЕКЛАМЫ...