是否有可能有不同的签名?

时间:2014-08-09 09:26:30

标签: haxe neko

我有以下代码:

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);
    }
}

Here is a link to a try Haxe code

如果我尝试编译这段代码,我会收到一个错误:```重复类字段声明:doAdd````

我的问题是,无论如何在haxe中有两种带有不同签名的方法吗?

1 个答案:

答案 0 :(得分:2)

在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的语法有点不同,只有在我理解的情况下才适用于externs。 this thread中有一个例子。