ocaml - 没有args和全局变量的函数

时间:2011-04-19 09:34:01

标签: variables ocaml global

我有一个ocaml的任务,找不到任何帮助信息所以请问这里;)如何定义在不使用全局变量的情况下在每个调用中给出其他东西的函数?我想做的有趣的是next()返回下一个奇数或下一个阶乘值。

喜欢这个

# next();;
- : int = 1
# next();;
- : int = 3
# next();;
- : int = 5
# next();;
- : int = 7

你对我有什么建议吗?

提前致谢

格雷格

1 个答案:

答案 0 :(得分:5)

let next =
  let private_counter = ref (-1) in
  fun () ->
    private_counter := !private_counter + 2;
    !private_counter

您也可以将其封装在“柜台工厂”中:

let make_counter () =
  (* note the () parameter : at each call of make_counter(),
     a new "next function" with a fresh counter is generated *)
  let private_counter = ...