我最近开始玩Haxe,使用AS3已经有一段时间了,在编写一个非常简单的游戏引擎时遇到了问题:
我有一个名为World
的班级。 World
所做的一件事就是跟踪游戏中的所有Entity
个对象。我希望这个Entity
对象列表只能从引擎内访问。引擎的用户不应该直接修改列表。
在AS3中,我可以简单地使用internal
关键字来访问同一个包中的其他类。当这还不够时,我可以定义一个自定义命名空间并将其用作我的访问修饰符。但是Haxe似乎没有其中任何一个。
TL; DR:如何限制变量对特定包/命名空间的访问?如果不可能,我还有其他选择吗?
答案 0 :(得分:2)
如果您正在使用Haxe 2.11(每晚构建),则可以使用@:allow
。
@:allow(my.pack):这将允许访问a的所有私有字段 包中的所有类my.pack(及其 子包)。有关详细信息,请参阅访问控制(自2.11起)
Access Control上更详细的文档。