我正在通过F#Wikibook工作,我已经进入了参考单元格的部分,其中出现以下代码片段:
let incr =
let counter = ref 0
fun () ->
counter := !counter + 1
!counter;;
Run Code Online (Sandbox Code Playgroud)
然后调用此函数三次,分别给出值1,2和3.有人可以解释为什么这个函数每次调用时都不会返回1吗?我解释这段代码的方式(显然不是正确的解释,因此问题)是,首先,声明参考单元格'counter',内容等于0,然后'counter'的内容递增1并且然后使用匿名函数解除引用.由于每次调用incr();;声明'counter'都有内容0,我不明白为什么调用incr();;不会每次只返回1.
谁能纠正我的理解?
提前致谢.
f# ×1