WarCraft 3: 9. Расширяющие функции

WurstScript
Расширяющие функции позволяют вам "добавлять" методы существующим типам, без необходимости создания нового типа или модификации существующего. Расширяющие функции, это особый вид статических функций, однако их вызов происходит подобно тому, как если бы это был родной метод расширяемого типа.
Синтаксис объявления расширяющих функций достаточно прост
public function TYPE.EXTFUNCTIONNAME(PARAMETERS) returns ...
    ...
    // Ключевое слово this предоставляет доступ к экземпляру расширяемого типа
Более подробный пример
// Определение
public function unit.getX() returns real
    return GetUnitX(this)

// Работает с любым типом
public function real.half() returns real
    return this/2

// Принимает параметр
public function int.add( int value )
    return this + value

// Использование
unit u = CreateUnit(...)
...
print( u.getX().half() )

// Так же работает с классами, позволяя обращаться 
// к закрытым членам класса
public function MyClass.getPrivateMember() returns real
    return this.privateMember

// Работает и с кортежами
public function vec2.lengthSquared returns real
    return this.x*this.x+this.y*this.y

Просмотров: 187

Clamp #1 - 4 месяца назад 1
Расширяющие функции, это собой вид статических функций
Полагаю, тут должно быть "особый"
GetLocalPlayer #2 - 4 месяца назад 0
Полагаю, тут должно быть "особый"
Правильно полагаешь.
Clamp #3 - 4 месяца назад 0
GetLocalPlayer, пробегись по всем пунктам статьи, вычитай косяки и логические несостыковки, потом отпишись в ЛС.