考虑到 ref 运算符,我很难理解它的应用和以下说明的含义:
1.
在这个定义中,我在定义什么?
- val ref x=ref 9;
val x = 9 : int
2.
我在用 ref x:= ref 12 做什么?
- val x= ref 8;
val x = ref 8 : int ref
- ref x := ref 12;
val it = () : unit
- x;
val it = ref 8 : int ref
val ref x = ref 9
定义x
为9
- 就像你写的一样val x = 9
。这是因为ref
它是一个构造函数,所以它是模式匹配值与绑定到 9ref 9
的模式。当然,像这样写而不是仅仅写是没有意义的。ref x
x
val x = 9
当您编写时ref x := ref 12
,您创建了一个新ref
的(类型int ref ref
)来引用x
. 然后,您立即将该 new 更改ref
为引用ref 12
而不是x
. 由于ref
您创建的新内容永远不会存储在您可能访问的任何地方,因此这不会产生明显的影响。
@newacct, @sepp2k 我看到这是几年前的事了,但我发现讨论很有用,并希望贡献以下输出Standard ML of New Jersey v110.79 [built: Tue Aug 8 16:57:33 2017]
:
- val ref x = ref 9;
val x = 9 : int