Ocaml中的全局变量



我正在寻找一种在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书(或其参考手册)。我们没有时间教你大部分。

参考真的很像

type 'a ref = { mutable contents: 'a };;

但具有用于去引用(!)和更新(:=

的句法糖(即中缀函数)

type state={connected:bool;currentUser:string};;让currentstate={connected=false;currentUser="};;

可以翻译为:

type state = {connected : bool ref ; currentUser : string ref };;
let currentstate = {connected = ref false ; currentUser = ref ""};;

分配值:

(currentstate.connected) := true ;;
- : unit = ()

获取值:

!(currentstate.connected) ;;
- : bool = true 

您还可以对其内容进行模式匹配。

在此处阅读更多关于ref的信息

相关内容

  • 没有找到相关文章

最新更新