2013-05-27 134 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