我有一个关于将 map 作为全局变量操作的问题。在我的文件的开头,我有:
module IntOrd = struct type t = int let compare = ( - ) end
module IntMap = Map.Make( IntOrd )
然后我想通过let Variables = IntMap.empty
声明一个全局变量,那么这个文件中的一些函数中variables
就会被修改。例如,在函数 letanalyze (p: s_program) : unit =
中,我想用 p
中的一些值填充变量
。但我不知道该怎么做,因为我似乎无法再修改 variables
了; IntMap.add : key -> 'a -> 'a t -> 'a t
也不起作用,因为它不会直接更改值。
我必须将这个全局变量作为引用吗?
有人可以帮忙吗?非常感谢
最佳答案
好吧,你已经回答了你自己的问题:)。您希望它是一个变量。 Ocaml 是函数式的,let x = ...
不声明变量(它是常量绑定(bind));要获取变量,您需要进行引用。然后你确实可以在你的函数中修改它,如下所示:
variables := IntMap.add foo bar !variables
关于dictionary - 在 Ocaml 中映射为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563296/