有没有办法在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