OCaml 变量,在函数调用之间保持它的值

标签 ocaml mutable imperative-programming

在 OCaml 中有没有办法让函数内的变量在函数调用之间保持其值?它应该像 Python 的默认参数一样工作,它是在每个函数调用中对同一对象的引用,或者该函数应该产生而不是显式返回值。效果应该如下(如果函数要返回自然数):

foo ();;
0
foo ();;
1

最佳答案

是的,这是可能的。您需要在闭包的 外部 定义一个本地 ref 并访问它的值并在每次使用闭包时修改它,如下所示:

let foo =
  (* local variable x *)
  let x = ref 0 in
  (* the closure that will be named foo *)
  fun () -> let r = !x in
            x := r+1; r

关于OCaml 变量,在函数调用之间保持它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47488200/

相关文章:

c++ - 由非常量成员函数更改的可变变量

c++ - 更好的可读性和简单性与更高的复杂性和编程速度,该选择什么?

programming-languages - 命令式和疑问式代码是什么意思

performance - 折叠优化

ocaml - 如何从异步代码中使用 Lwt 库?

syntax-error - OCaml : and keyword syntax error

ocaml - 为什么 "1.0 == 1.0"在Ocaml中为假?

python - SQLAlchemy/PostgreSQL 可变、去重数组

python - 列表理解几个框架