我有一个关于将地图作为全局变量进行操作的问题。在我的文件的开头,我有:
module IntOrd = struct type t = int let compare = ( - ) end
module IntMap = Map.Make( IntOrd )
然后我想通过let variables = IntMap.empty
声明一个全局变量,然后在这个文件的某些函数中修改variables
。例如,在函数let analyze (p: s_program) : unit =
中,我想用variables
中的某些值填充p
。但我不明白该怎么做,因为我似乎无法修改variables
; IntMap.add : key -> 'a -> 'a t -> 'a t
无法正常工作,因为它不会直接更改值。
我是否必须将此全局变量作为参考?
有人可以帮忙吗?非常感谢你
答案 0 :(得分:3)
嗯,你回答了自己的问题:)。您希望它是变量。 Ocaml是有效的,let x = ...
不声明变量(它是一个常量绑定);要获得一个变量,你需要做一个参考。然后你可以在你的函数中修改它,如:
variables := IntMap.add foo bar !variables
答案 1 :(得分:2)
是的,如果您希望能够修改地图,则必须将其作为参考。然后,您可以使用variables := IntMap.add foo bar !variables
更改它。