Haxe获取函数参数类型

时间:2013-05-27 23:12:27

标签: reflection haxe

我有像这样的haxe代码:

var fn:String->Int = function(s:String):Int{
    return 1;
}

getParameterType(fn,1);//Should return String as it is first parameter of fn

getParameterType代码的功能应该是什么样的?

1 个答案:

答案 0 :(得分:4)

可以在此处找到Haxe Reflection API:ReflectType

通过它们看,似乎没有任何方法可以检查函数的参数类型,可能是因为在许多平台上运行时都无法获得此信息。例如,Javascript是松散类型的,默认情况下不包括您要查找的信息。

所以你有三个选择:

  1. 使用RTTI(运行时类型信息)。如果一个类标有@:rtti元数据(在Haxe 3中,或者在Haxe 2中标记为implements haxe.rtti.Infos),那么有关该类的信息,包括函数参数的类型,在运行时以Xml格式提供时间。您将不得不查看Xml以确定参数是什么。这仅适用于附加到类的函数,但它不适用于匿名函数。

  2. 使用宏。这超出了我的答案的范围,但是如果你需要帮助可能会在Haxe邮件列表上询问:)如果参数类型在编译时是已知的,那么它可以被宏知道,你可以将这些信息保存回某处所以它在运行时可用。

  3. 找出另一种不需要您知道类型的用法:)

  4. 当然,如果您只需要在编译时获取信息,而不是在运行时,您可以在代码中的任何位置执行:$type(fn),编译时会告诉您确切的类型签名“FN”。