繁体   English   中英

OCaml动态功能名称

[英]OCaml dynamic function name

我有一个标签列表:

let tags = ["div", "h1", "p"]

我可以生成一个包含以这些标签为名称的函数的模块吗?

/ *不介意语法,这是Facebook的原因(ocaml的新界面)* /

let module DOM = {
   let div props children => Js.Unsafe.fun_call
        (Js.Unsafe.get dom (Js.string "div")) [|Js.Unsafe.inject props, Js.Unsafe.inject children|];
    let h1 props children => Js.Unsafe.fun_call
        (Js.Unsafe.get dom (Js.string "h1")) [|Js.Unsafe.inject props, Js.Unsafe.inject children|];
let p props children => Js.Unsafe.fun_call
        (Js.Unsafe.get dom (Js.string "p")) [|Js.Unsafe.inject props, Js.Unsafe.inject children|];

}

标签名称应成为模块中的功能...这可能吗?

假设您要执行的是在执行程序时使用string list名称构建模块,

简短答案:不,OCaml是一种静态类型的语言,您无法在程序执行时建立新的变量名。

更长的答案:您可以使用元编程:使用所需名称构建源代码,然后对其进行编译并动态链接已编译的模块。 但这根本不是使用OCaml的常规方法。 另外,查看环境,使用OCaml(或Reason)输出Js代码,您可能需要将OCaml(或Reason)编译器编译为Js,这很困难,应避免。

结论:不,您不能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM