Вызов функции в OCaml на основе строковой переменной, хранящей имя функции
Есть ли в OCaml такой механизм, чтобы я мог динамически вызывать функцию на основе переменной, хранящей имя функции, как то, что я могу делать в других языках сценариев?
Например, я написал функцию foo(). И я храню строковые константы "foo" где-то в переменной "x". В JavaScript я могу сделать что-то вроде этого window[x](arguments);
динамически вызывать метод foo(). Могу ли я сделать что-то подобное в OCaml?
1 ответ
Нет, это не та вещь, которую OCaml позволяет вам делать легко. Определение программы, включая имена функций и т. Д., Недоступно для самой программы.
Простой способ получить этот эффект для заранее известного набора функций - создать словарь (скажем, хеш-таблицу или карту), используя имя функции в качестве ключа. Обратите внимание, что для этого потребуется, чтобы функции имели одинаковый тип (что является особенностью OCaml, не проблема:-).