文档 / 语言手册 / 可变性
Edit

可变性

ReScript 在传统的命令式且数据可变的编程方式上表现不错。你应当谨慎使用这些特性,但有时候它们可以让你的代码有更好的性能,也可以让你用更熟悉的方式编写代码。

可变 let 绑定

let 绑定是不可变的,但是你可以用一个 ref 来包装它,这在标准库中被暴露为一个带有单独可变字段的记录:

ReScriptJS Output
let myValue = ref(5)

用法

你可以通过访问 content 字段获得 ref 包装的实际值:

ReScriptJS Output
let five = myValue.contents // 5

像下面这样给 myValue 赋新值:

ReScriptJS Output
myValue.contents = 6

我们为此提供了一个语法糖:

ReScriptJS Output
myValue := 6

请注意,前一个绑定 five 的值仍然是 5,因为它得到了 ref 包装里的内容,而不是 ref 本身。

注意:你可能在上面的 JS 输出中看到,ref 分配了一个对象。不用担心,局部非导出的 ref 分配会被优化掉。

技巧和诀窍

在使用 ref 之前,要知道你可以使用覆盖 let 绑定来实现轻量级的局部“可变性”。