我有像这样的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代码的功能应该是什么样的?
答案 0 :(得分:4)
可以在此处找到Haxe Reflection API:Reflect和Type。
通过它们看,似乎没有任何方法可以检查函数的参数类型,可能是因为在许多平台上运行时都无法获得此信息。例如,Javascript是松散类型的,默认情况下不包括您要查找的信息。
所以你有三个选择:
使用RTTI(运行时类型信息)。如果一个类标有@:rtti
元数据(在Haxe 3中,或者在Haxe 2中标记为implements haxe.rtti.Infos
),那么有关该类的信息,包括函数参数的类型,在运行时以Xml格式提供时间。您将不得不查看Xml以确定参数是什么。这仅适用于附加到类的函数,但它不适用于匿名函数。
使用宏。这超出了我的答案的范围,但是如果你需要帮助可能会在Haxe邮件列表上询问:)如果参数类型在编译时是已知的,那么它可以被宏知道,你可以将这些信息保存回某处所以它在运行时可用。
找出另一种不需要您知道类型的用法:)
当然,如果您只需要在编译时获取信息,而不是在运行时,您可以在代码中的任何位置执行:$type(fn)
,编译时会告诉您确切的类型签名“FN”。