基于存储函数名的字符串变量在OCaml中调用函数

基于存储函数名的字符串变量在OCaml中调用函数,ocaml,Ocaml,OCaml中是否有这样一种机制,可以根据存储函数名的变量动态调用函数,就像我在其他脚本语言中所做的那样 例如,我编写了一个函数foo()。我将字符串常量“foo”存储在变量“x”中的某个位置。在JavaScript中,我可以做如下操作window[x](参数)动态调用方法foo()。我可以在OCaml中做类似的事情吗?不,这不是OCaml允许您轻松完成的事情。程序定义(包括函数名等)不可供程序本身操作 对于提前知道的一组函数,获得这种效果的一种简单方法是使用函数名作为键制作函数字典(比如哈希表或

OCaml中是否有这样一种机制,可以根据存储函数名的变量动态调用函数,就像我在其他脚本语言中所做的那样


例如,我编写了一个函数foo()。我将字符串常量“foo”存储在变量“x”中的某个位置。在JavaScript中,我可以做如下操作
window[x](参数)
动态调用方法foo()。我可以在OCaml中做类似的事情吗?

不,这不是OCaml允许您轻松完成的事情。程序定义(包括函数名等)不可供程序本身操作


对于提前知道的一组函数,获得这种效果的一种简单方法是使用函数名作为键制作函数字典(比如哈希表或映射)。请注意,这将要求函数具有相同的类型(这是OCaml的一个特性,不是问题:-)。

这是因为OCaml是强类型语言吗?对于字典,您能给我看一些非常简单的代码吗?您可以使用哈希表。这里有一个教程:@MartinJambon是的,我知道。但是你知道把函数写为hashmap的值,然后根据键调用它的语法吗?@MartinJambon好的,没关系,我自己发现了。