我正在寻找一种在 ocaml 中定义全局变量的方法,以便我可以在程序中更改它们的值。我想要用户的全局变量是:
type state = {connected : bool ; currentUser : string};;
let currentstate = {connected = false ; currentUser = ""};;
如何更改 connected 和 currentUser 的值并将新值保存在整个程序的同一变量 currentstae 中?
最佳答案
要么声明一个可变记录类型:
type state =
{ mutable connected : bool; mutable currentUser : string };;
或者声明一个全局引用
let currentstateref = ref { connected = false; currentUser = "" };;
(然后使用
!currentstateref.connected
访问它...)两者都做不同的事情。可变字段可以改变(例如
state.connected <- true;
...但包含它们的记录保持相同的值)。引用可以更新(它们“指向”一些更新的值)。你需要花几个小时来阅读更多你的 Ocaml 书(或它的 reference manual)。我们没有时间教你其中的大部分内容。
一个引用真的很像
type 'a ref = { mutable contents: 'a };;
但是使用语法糖(即中缀函数)来取消引用(
!
)和更新( :=
)
关于global-variables - Ocaml 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504958/