Получить тип поля в Haxe (отражение API) - PullRequest
8 голосов
/ 06 декабря 2011

У меня есть класс:

class MyClass {
    private var num : Int;
}

Я хотел бы знать, что поле имеет тип Int независимо от текущего значения , которое может быть, например, null.

1 Ответ

4 голосов
/ 06 декабря 2011

Вы не можете сделать это во время выполнения без информации времени компиляции.Вы можете сделать это либо с RTTI , либо с макросами.RTTI было бы проще реализовать, хотя он мог бы быть немного медленнее, если бы вам пришлось анализировать RTTI несколько раз.

Тогда ваш класс стал бы:

@:rtti
class MyClass {
    private var num : Int;
}

и получитьтип поля:

var rtti = haxe.rtti.Rtti.getRtti(MyClass);
for (field in rtti.fields) {
    if (field.name == "num") {
        switch (field.type) {
            case CAbstract(name, _):
                trace(name); // Int
            case _:
        }
    }
}
...