List 如何在Haxe中检索模块中所有类的列表?(又名:助手类)
考虑到Haxe文件定义了一系列类,如下所示:List 如何在Haxe中检索模块中所有类的列表?(又名:助手类),list,macros,module,package,haxe,List,Macros,Module,Package,Haxe,考虑到Haxe文件定义了一系列类,如下所示: import flash.display.MovieClip; import flash.display.Sprite; import haxe.unit.TestCase; class MainTest extends Sprite { public var testcase:Array<Class<TestCase>> = ???; } class TestSprite extends TestCase {
import flash.display.MovieClip;
import flash.display.Sprite;
import haxe.unit.TestCase;
class MainTest extends Sprite {
public var testcase:Array<Class<TestCase>> = ???;
}
class TestSprite extends TestCase {
function testBasic() {
var sprite = new Sprite();
sprite.x = 0;
assertEquals(sprite.x, 0);
}
}
class TestMovieClip extends TestCase {
function testMovieClip() {
var mc = new MovieClip();
mc.nextFrame();
assertEquals(mc.currentFrame, 2);
}
}
导入flash.display.MovieClip;
导入flash.display.Sprite;
导入haxe.unit.TestCase;
类MainTest扩展了Sprite{
公共变量测试用例:数组=???;
}
类TestSprite扩展了TestCase{
函数testBasic(){
var sprite=新sprite();
sprite.x=0;
资产质量(sprite.x,0);
}
}
类TestMovieClip扩展了TestCase{
函数testMovieClip(){
var mc=新的MovieClip();
mc.nextFrame();
资产质量(mc.currentFrame,2);
}
}
是否有方法获取所有帮助程序类的列表(例如:
TestSprite
和TestMovieClip
)?最好是在运行时,但是返回数组的宏也可以正常工作。我有一个名为的小型宏帮助程序库,可以获取包中的所有类,或扩展某个类的所有类
haxelib install compiletime
然后按基类或包获取类:
var testcases = CompileTime.getAllClasses("my.package");
var testcases = CompileTime.getAllClasses(TestCase);
var testcases = CompileTime.getAllClasses("my.package",TestCase); // Both!
现在,这是通过包而不是模块来获取它们。通过模块获取它可能会起作用,我不太清楚。但如果要编辑代码的这一部分:
并将其更改为还支持通过模块获取,并向我发送拉取请求,我肯定会将其合并:)
祝你好运 酷毙了,看来它会成功的。我一直认为“模块”和“包”本质上是一回事?这里还有另一个问题:CompileTime.getAllClasses(…)
也会(递归地)在子包中查找类吗?“模块”是单个.hx文件。包是指给定文件夹中的所有.hx文件。您可以在每个模块中定义任意多的类或类型,也可以在每个包中定义任意多的模块。关于递归包,默认情况下,CompileTime.getAllClasses()
也将在子包中获取类。您可以通过执行CompileTime.getAllClasses(“my.package”,false)来改变这一点代码>或类似。很高兴知道。听起来,如果我希望在一次调用中收集所有测试用例,那么将所有测试用例保存在“测试”包中是非常理想的。感谢您创建和共享该类,我以前也使用过它来读取文件(xml/json),很高兴您发现它很有用:)