1

我有以下代码:

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 中是否有两种具有不同签名的方法?

4

1 回答 1

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

在其他目标上, for 的语法@:overload有点不同,据我所知,仅适用于 externs。这个线程中有一个例子。

于 2014-08-09T10:08:52.947 回答