Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何在Haxe中检索模块中所有类的列表?(又名:助手类)_List_Macros_Module_Package_Haxe - Fatal编程技术网

List 如何在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 {

考虑到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 {
    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),很高兴您发现它很有用:)