在OCaml中是否有这样的机制,这样我可以根据存储函数名的变量动态调用函数,就像我在其他脚本语言中可以做的那样?
例如,我编写了一个函数foo()。我存储了字符串常量" foo"变量中的某个地方" x"。在JavaScript中,我能够执行类似此window[x](arguments);
的操作来动态调用方法foo()。我可以在OCaml中做类似的事情吗?
答案 0 :(得分:1)
不,这不是OCaml让你轻松做到的事情。程序定义,包括函数名称等,不能供程序本身操作。
为提前知道的一组函数获得此效果的一种简单方法是使用函数名作为键来创建函数的字典(哈希表或地图)。请注意,这将要求函数具有相同的类型(这是OCaml的一个特性而不是问题: - )。