global-variables - Ocaml 中的全局变量

标签 global-variables ocaml caml

我正在寻找一种在 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/

相关文章:

php - 如何将全局变量传递给 PHP 中的类?

jquery - 具有变量、事件和 DOM 操作的多个 jQuery 实例

javascript - 如何使 for 循环与变量内的变量一起工作

OCaml - 什么是不健全的类型?

CAML 中的 SharePoint A-Z groupby

c# - SharePoint:创建 SPQuery 查询时出现 CAML 查询错误

c# - 如何从不同的线程访问变量?

oop - scala 有功能对象的快捷方式吗?

pattern-matching - 通过 ocaml 中的参数名称和模式匹配进行绑定(bind)

c# - SharePoint CAML 查询在生成器中有效,但在代码中无效