如何在 OCaml 中保存和更改变量的值?

Posted

技术标签:

【中文标题】如何在 OCaml 中保存和更改变量的值?【英文标题】:How do I save and change the value of a variable in OCaml? 【发布时间】:2012-04-17 15:36:50 【问题描述】:

这可能是一个非常新手的问题,但我没有找到答案。 例如,我需要存储一个列表,然后在同一个指针下将其替换为另一个。

【问题讨论】:

【参考方案1】:

可以通过references:

let fact n =
  let result = ref 1 in (* initialize an int ref *)
  for i = 2 to n do
    result := i * !result (* reassign an int ref *)
   done;
  !result

您不会经常看到引用,因为您可以在递归或高阶函数中使用不可变值来做同样的事情:

let fact n =
   let rec loop i acc =
      if i > n then acc
      else loop (i+1) (i*acc) in
   loop 2 1

首选无副作用的解决方案,因为它们更容易推理并且更容易确保正确性。

【讨论】:

谢谢。你能解释一下 ref 0 的含义吗? 查看我在回答中引用的链接。基本上ref 0 是一条记录mutable contents: int,其中contents0 初始化,contents 可以稍后重新分配。

以上是关于如何在 OCaml 中保存和更改变量的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 utop 中重新加载 OCaml 模块

如何在不扩展令牌的情况下获取 PATH 环境变量的值?

如何在 Ocaml 中解决这个字典问题?

如何在颤动中更改另一个类中变量的值

如何在javascript中更改函数中变量的值?

如何访问和更改在 FLUTTER/DART 的另一个类中声明的字符串变量的值