如何在多个文件中访问typedef类型?

时间:2014-12-17 08:06:38

标签: haxe

typedef有很大的好处,但我不知道如何在多个文件中包含相同的类型是haxe? 例如,我需要在a.hx和b.hx文件中使用此类型:

typedef JsonControl = {
    var name:String;
    var type:String;
    var user_answer:String;
    var answer:Array<String>;
    var htmlID:String;
}

怎么做?

2 个答案:

答案 0 :(得分:4)

它的工作方式类似于常规类定义,因此最好定义一个包并将其另存为.hx文件。然后只需将其导入您想要使用它的位置。

答案 1 :(得分:0)

正如另一个答案所述,haxe如何发现typedef的规则与它找到类的方式相同。

类型命名的模块文件

在Haxe中在多个文件之间共享类型的最简单方法是创建一个以该类型命名的模块。例如,假设您在包 from atom.api import Atom,Bool class MyModel(Atom): myBool = Bool() def getDict(self): return {'myBool':self.myBool} def setAllBoolsTrue(self): self.myBool = True #example to show that just setting mybool will update UI components that use it #now to show how to generalize to many components for key,value in self.getDict().iteritems(): setattr(self,key,True) #this updates the UI 中,并希望从多个文件中访问类型x。您可以创建文件MyType并将x/MyType.hx的定义放在MyType中。此文件可能如下所示:

x/MyType.hx

模块子类型

如果需要,您可以将package x; typedef MyType = { id:String, } 放在名称不同的文件中,例如MyType。如果你这样做,访问它需要更多的工作。要在另一个文件中使用它,您需要拥有x/MySharedTypes.hx语句或键入模块限定名称import x.MySharedTypes(来自包x.MySharedTypes.MyType中的文件),您只需键入{{ 1}})。在此示例中,您可能具有:

x

MySharedTypes.MyType

x/MySharedTypes.hx

package x;

typedef MyType = {
    id:String,
}

x/MyFirstConsumer.hx

package x;

import x.MySharedTypes;

class MyFirstConsumer {
    var instance:MyType;
}

文档

您可以在手册中标题为Module Sub-Types的页面中阅读更多详细信息。