OCaml 变量,在函数调用之间保持它的值
OCaml variable, which keeps it value between function calls
OCaml 中有没有办法让函数内的变量在函数调用之间保持其值?它应该像 Python 的默认参数一样工作,它是在每个函数调用中对同一对象的引用,或者函数应该产生而不是显式 return 一个值。效果应该如下(如果函数是 return 自然数):
foo ();;
0
foo ();;
1
是的,这是可能的。您需要定义闭包的局部 ref
outside 并访问它的值并在每次使用闭包时修改它,如下所示:
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 中有没有办法让函数内的变量在函数调用之间保持其值?它应该像 Python 的默认参数一样工作,它是在每个函数调用中对同一对象的引用,或者函数应该产生而不是显式 return 一个值。效果应该如下(如果函数是 return 自然数):
foo ();;
0
foo ();;
1
是的,这是可能的。您需要定义闭包的局部 ref
outside 并访问它的值并在每次使用闭包时修改它,如下所示:
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