请注意,我在针对Neko的Linux上使用Haxe 3.0.1。
请考虑以下代码:
var classObject = Type.resolveClass("Foo");
假设我在与此代码相同的包中有一个类Foo
,这应该会为我提供一个Class
对象,其中包含Foo
的信息。但是,在我的测试中,只有先{I} import Foo;
才有效。如果我不导入Foo
,则resolveClass
会返回null
。这对我来说很奇怪。
我注意到Haxe API文档声明:
该类必须已编译为可访问,如果Class不在同一个包中,则必须将完整的“点路径”作为字符串的一部分给出。
但我不清楚“必须编译为可访问”是指在这种情况下是否适用于我的问题。
那么,我真的需要import
每个我可能要解决的课程,还是我错过了其他课程?
答案 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)