如何在不先导入类型的情况下resolveClass?

时间:2014-01-24 03:16:22

标签: haxe

请注意,我在针对Neko的Linux上使用Haxe 3.0.1。

请考虑以下代码:

var classObject = Type.resolveClass("Foo");

假设我在与此代码相同的包中有一个类Foo,这应该会为我提供一个Class对象,其中包含Foo的信息。但是,在我的测试中,只有先{I} import Foo;才有效。如果我不导入Foo,则resolveClass会返回null。这对我来说很奇怪。

我注意到Haxe API文档声明:

  

该类必须已编译为可访问,如果Class不在同一个包中,则必须将完整的“点路径”作为字符串的一部分给出。

但我不清楚“必须编译为可访问”是指在这种情况下是否适用于我的问题。

那么,我真的需要import每个我可能要解决的课程,还是我错过了其他课程?

2 个答案:

答案 0 :(得分:2)

首先,您应该为Type.resolveClass提供该类的完全限定名称。即pack.subpack.AClass

其次,您可以使用--macro include("pack")。其中include函数是来自haxe.macro.Compiler的方法。默认情况下,--macro会查看该类的方法。

最后,haxe中的import my.package.*语句是懒惰的。它告诉编译器解析my.package中的类型,但不能真正导入my.package中的所有内容。

答案 1 :(得分:0)

是的,你必须...... 但你可以用haxe.macro.ImportAll(“package”)

批量处理它