繁体   English   中英

Haxe宏调用一个类的静态方法

[英]Haxe macro to call static method of a class

我有一组类,它们都具有相同的静态方法(或实际上是一组方法)。 我如何实现一个宏,这将允许我调用给定类的某些方法? 像这样的getStaticMethod(className, methodName)(...args...) 我需要这个,因为遗憾的是Class<T>不提供对静态类成员的访问。

这可以非常简单地完成,你甚至不需要任何“字符串类型代码”(将类和方法名称传递给宏)。

您只需将点路径表达式传递给宏:

import haxe.macro.Expr;

class Main {
    static function main() {
        trace(resolveDotPath(haxe.Json.parse)("{}")); // {}
        trace(resolveDotPath(Math.random)()); // 0.34622209081586863
    }

    static macro function resolveDotPath(dotPath:Expr):Expr {
        return macro $dotPath;
    }
}

但是 - 似乎就在那时,您可以直接调用该函数?

如果您在调用宏时不知道该类是什么,宏可能对您没有多大帮助,并且不允许您在编译时生成严格类型的代码。

将一些Class<T>实例传递给可能来自任何地方的宏并将具体点路径/类名称作为字符串文字传递之间存在差异。 如果在编译时未知有关调用的类,则所有宏都可以为您生成反射代码,因为这必须在运行时决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM