有沒有辦法在F#中按名稱調用函數?給定一個字符串,我想從全局命名空間(或者一般來說,給定的模塊)中獲取一個函數值,然後調用它。我知道這個功能的類型了。我可以在f#中通過名稱調用函數嗎?
爲什麼我要這樣做?我正在努力解決fsi沒有--eval選項。我有一個腳本文件,它定義了許多int - >()函數,並且我想執行其中的一個。像這樣:
fsianycpu --use:script_with_many_funcs.fsx --eval "analyzeDataSet 1"
我的想法是寫一個腳本蹦牀,如:
fsianycpu --use:script_with_many_funcs.fsx trampoline.fsx analyzeDataSet 1
爲了寫「trampoline.fsx」,我需要通過名稱來查找功能。
謝謝,這對我的作品。 @ jbtule的答案看起來更復雜,但也可能更加健壯。當簡單的答案有效時,我喜歡簡單的答案。 :-) –
在交互式場景中,當每個部分編譯向正在執行的程序集中添加一個類型和一個名稱相同的靜態方法時,好的簡單答案將會消失。以及如何區分類型上的let-bound函數和靜態成員? – kaefer