这个问题已经在旧的Haxe论坛上被问过(并且可能已经回答过)...但似乎整个论坛系统不再起作用了。因此,我在这里问:
在Haxe,我需要声明一个"接口"到包含静态函数的类," instance()。"但是当我这样做时:
You can't declare static fields in interfaces
所以我删除了" static"来自public function instance() [...]
,我明白了:
Field instance needed by [...] is missing.
显然是" Catch-22。"但显然必须有一些简单的解决方案。它是什么?
答案 0 :(得分:5)
正如您所说,语言不允许在接口上使用静态字段。选择是有意的。另一件不存在的事情是继承静态字段。
有几种方法可以构建代码以避免这种使用,在我看来它并没有给你带来很多好处。工厂模式或DI方法(我建议minject library)似乎最明显。
鉴于下面的评论,请转到typedef
而不是界面:
typedef GetInstance = Void -> Void;
您可以将该typedef与接口相同地传递,其优点是您可以使用静态方法和实例方法来满足该签名。
答案 1 :(得分:0)
查看Singleton库。任何实现Singleton的类都会自动声明一个静态“实例”变量和相应的getter函数。
注意:在撰写本文时,Haxelib版本(1.0.0)已过期。请改为下载Git版本。