请注意,我在Linux上使用针对Neko的Haxe 3.0.1。如何在不导入类型的情况下解析类别?
考虑下面的代码:
var classObject = Type.resolveClass("Foo");
假设我有相同的包,因为这代码的类Foo
,这应该给我一个Class
对象与有关它Foo
信息。但是,在我的测试中,只有在我首先使用import Foo;
时才能正常工作。如果我不导入Foo
,则resolveClass
将返回null
。这对我来说很奇怪。
我注意到Haxe API文档状态:
类必须已经被编译可访问,如果类不在同一个包,完整的“点路径”必须作为的一部分字符串。
但我不清楚什么“必须被编译为可访问”意味着在这种情况下,或者它如何适用于我的问题。
那么,我真的需要import
每一个我可能想要解决的课程,还是我缺少其他东西?
文档中提到,如果目标类与调用代码不在同一个包中,则只需使用完全限定名。在任何情况下,在这个例子中'Foo'都在空包中,因此“Foo”**是完全限定名。 – ean5533
我想你提到的文档是http://haxe.org/api/type,它在某种程度上已过时......更新的文档位于http://api.haxe.org/Type.html#resolveClass。通过简单的测试,我确认了完全合格的名称是必需的。这仅仅是为了你的情况'Foo'是在顶层包,它恰好是完全合格的。 –
谢谢你。我尝试使用'--macro include(“my.package”)',我遇到了一个单独的问题,我问了一下[这里](http://stackoverflow.com/questions/21391833/macro-include-is -recursively,包括 - 包 - 不适合换集结TARG)。 – ean5533