🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
如已经看到的,不可能一次导入一个完整的包。为了克服这个限制,可以使用以一种快捷方式文件。文件会包含导入语句和一个小的对包中每个类型的 typedef 声明,或者只是经常在一起使用的。然后当整个集合的类型被需要,一个导入语句可以用来调用快捷文件。 ~~~ // content of file GeomImport.hx import geom.Point; // the import is needed otherwise Point3D cannot be referenced // ... typedef Circle = geom.Circle typedef Point = geom.Point typedef Point3D = geom.Point3D // ... ~~~ 可以这样使用: ~~~ // content of file Main.hx import GeomImport; class Main { static function main() { var p1 : Point = new Point(1,2); // ... var p2 : Point3D = new Point3D(1,2,3); // ... var c : Circle = new Circle(p1, 10); // ... } } ~~~ Point3D 实现不再例子中展示,但是它是一个类,扩展了Point,驻留在相同的 hx文件。它不是主要类型,因此,必须被显式的导入或者如之前讲的间接进行导入。 这种技术似乎加载输出文件带有额外的包袱对于新引入的 typedef ;在实践中编译的结果完全是和直接导入的一样。因为 typedef 是声明,仅仅用于检查编译时的类型,并不会实际传输到生成的字节码输出。 某些情况,它可以用来创建类的实例,使用它们的名称和反射API。听起来很明显,在生成的实例上不会进行类型检查,因为他们只能在运行时被识别。如果这些类只是通过反射使用,编译器不能知道它们实际上需要,也不会包括他们到输出文件。要使事情正确,类必须显式的导入到代码中的某个地方,通过 import 语句。