【发布时间】:2014-03-19 10:59:00
【问题描述】:
# let counter () =
let c = ref 0 in
fun () ->
let _ = c := !c + 1 in
!c ;;
val counter : unit -> unit -> int = <fun>
# let incCounter = counter () ;;
# incCounter () ;;
- : int = 1
# incCounter () ;;
- : int = 2
我不明白为什么每次拨打incCounter () ;; 时都不会再次呼叫let c = ref 0。每次调用 incCounter 时,fun() ->... 部分似乎只适用于 c 的一个引用。
【问题讨论】:
-
对 ref 递增代码的一个提示:有 Pervasives.incr 可以做到这一点,因此第 4 行可以重写为 incr c (好吧,gsg 说过... )