2013-05-27 84 views
0

我有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代码是什么样子?

+0

你好,我想问你一些关于haxe的东西..你能帮我吗? – Rajneesh071

回答

4

Haxe Reflection API可以在这里找到:ReflectType

通过它们看,似乎没有任何方法来检查函数参数的类型,可能是因为这些信息在许多平台的运行时不可用。例如Javascript是松散类型的,并且您正在查找的信息默认不包含在内。

所以,你有三种选择:

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

  2. 使用宏。这超出了我的答案范围,但也许在Haxe邮件列表上询问是否需要帮助:)如果参数类型在编译时已知,则可以通过宏知道它,并且可以将该信息保存在某处所以它在运行时可用。

  3. 弄清楚,不需要你知道类型另一个使用:)

当然,如果你只需要在编译时的信息,而不是在运行时,你可以做:$type(fn)你的代码中的任何地方,当你编译它会让你知道“fn”的确切类型签名。

+0

你好,我想问你一些关于haxe的东西..你能帮我吗? – Rajneesh071

+0

@ Rajneesh071我看到你在几个地方问过:P只是发布一个问题,并标记它'haxe',并希望有人可以帮助你。否则,有Haxe IRC频道或Haxe邮件列表。 –

+0

我做了,但成员把他们搁置...... – Rajneesh071