假設你要編寫一個函數「根」與由一個類型列表給予了簽名生成功能:函數生成任意簽名
let gen (sig:Type list) = ....
let sig = [ typeof<int>; typeof<int[]>; typeof<float> ]
let func = gen sig
then func is of type: int -> int[] -> float -> unit
我想到了兩個可能的解決方案:
a)使用反射發射,但我不知道這樣我們可以使智能感知工作? 反射發射似乎創建新的.net代碼,IntelliSense可能看不到,所以它可能無法在編譯時驗證代碼。
b)使用類型提供程序,但我擔心太重,可能不實際。
c)使用泛型,如gen<'T1> (sig:Type list) : 'T2 -> unit
,這可能需要遞歸調用,但我沒有想到如何做到這一點。
我更喜歡方法c),因爲它是輕量級的,並且可以在編譯時檢查。還是有其他方法?
你什麼時候做這一代?運行?編譯時(如果是這樣,編碼?到DLL?)? – 2012-08-02 06:45:12
出於好奇,你最終的目標是什麼? – nicolas 2012-08-04 13:46:15