Haxe:如何申报"静态"接口中的方法?

时间:2015-04-29 16:49:27

标签: interface static haxe

这个问题已经在旧的Haxe论坛上被问过(并且可能已经回答过)...但似乎整个论坛系统不再起作用了。因此,我在这里问:

在Haxe,我需要声明一个"接口"到包含静态函数的类," instance()。"但是当我这样做时:

You can't declare static fields in interfaces

所以我删除了" static"来自public function instance() [...],我明白了:

Field instance needed by [...] is missing.

显然是" Catch-22。"但显然必须有一些简单的解决方案。它是什么?

2 个答案:

答案 0 :(得分:5)

正如您所说,语言不允许在接口上使用静态字段。选择是有意的。另一件不存在的事情是继承静态字段。

有几种方法可以构建代码以避免这种使用,在我看来它并没有给你带来很多好处。工厂模式或DI方法(我建议minject library)似乎最明显。

鉴于下面的评论,请转到typedef而不是界面:

typedef GetInstance = Void -> Void;

您可以将该typedef与接口相同地传递,其优点是您可以使用静态方法和实例方法来满足该签名。

答案 1 :(得分:0)

查看Singleton库。任何实现Singleton的类都会自动声明一个静态“实例”变量和相应的getter函数。

注意:在撰写本文时,Haxelib版本(1.0.0)已过期。请改为下载Git版本。