任何人都有一个体面的例子,最好是实际/有用的,他们可以发表说明这个概念的例子吗?

我在一个我找不到的地方碰到了这个词,可能它需要做一些事情,使一个函数在封装了一些可变变量的同时返回一个函数。因此没有可见的突变。

Haskell社区可能起源于这种想法,即突变发生在示波器看不见的另一个区域。我在这里可能含糊不清,因此寻求帮助以了解更多信息。

最佳答案

隐藏突变是个好主意,因此API的使用者不会毫不客气地进行意外更改。这仅意味着您必须封装可变数据/状态。这可以通过对象(是的,对象)来完成,但是您要在问题中引用的内容可以通过闭包来完成,典型示例是一个计数器:

let countUp =
    let mutable count = 0
    (fun () -> count <- count + 1
               count)

countUp() // 1
countUp() // 2
countUp() // 3


您不能直接访问可变计数变量。

关于f# - F#隐藏突变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49764808/

10-11 13:32