Можно ли иметь другую подпись?
У меня есть следующий код:
class Test {
static function main() {
trace("Haxe is great!");
var api:Api = new Api();
api.doAdd(1,1);
}
}
class Api {
public function new(){}
public function doAdd( x : Int, y : Int ) {
trace( x + y );
}
public function doAdd( x : Int, y : Int , z : Int) {
trace( x + y + z);
}
}
Вот ссылка на пробный код Haxe
Если я пытаюсь скомпилировать этот код, я получаю ошибку: ```Дублирование объявления поля класса: doAdd````
У меня вопрос, есть ли в любом случае два метода с разными сигнатурами в haxe?
1 ответ
Решение
На цели Java и C# работает следующее:
@:overload
public function doAdd(x:Int, y:Int) {
trace(x + y);
}
@:overload
public function doAdd(x:Int, y:Int, z:Int) {
trace(x + y + z);
}
На других целях синтаксис @:overload
немного отличается и работает только для внешних, насколько я понимаю. В этой теме есть пример.