如何在Haxe中检索模块中所有类的列表? (又名:助手班)

时间:2014-12-08 03:41:26

标签: 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 {
    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);
    }
}

有没有办法获取所有助手类的列表(例如:TestSpriteTestMovieClip)?最好在运行时,但是返回Array<Class<TestCase>>的宏也可以正常工作。

1 个答案:

答案 0 :(得分:3)

我有一个名为compiletime的小型宏助手库,可以获取包中的所有类,或者扩展某个类的所有类。

haxelib install compiletime

然后通过基类或包来获取类:

var testcases = CompileTime.getAllClasses("my.package");
var testcases = CompileTime.getAllClasses(TestCase);
var testcases = CompileTime.getAllClasses("my.package",TestCase); // Both!

现在,这是通过包而不是模块来获取它们。通过模块获取它可能会起作用,我不确定是不是最重要的。但是如果你要编辑这部分代码:

https://github.com/jasononeil/compiletime/blob/master/src/CompileTime.hx#L208

并将其更改为也支持按模块获取,并向我发送拉取请求,我肯定会将其合并:)

祝你好运!