考虑到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
答案 0 :(得分:6)
val ref x = ref 9
将x
定义为9
- 就像您已撰写val x = 9
一样。这是因为ref
是一个构造函数,所以它的模式与值ref 9
匹配模式ref x
,它将x
绑定到9.当然写它像这样,而不是仅仅写val x = 9
就没什么意义了。
当您撰写ref x := ref 12
时,您会创建一个引用ref
的新int ref ref
(类型为x
)。然后,您立即更改新的ref
以引用ref 12
而不是x
。由于您创建的新ref
永远不会存储在您可能访问的任何位置,因此没有可观察到的效果。
答案 1 :(得分:0)
@ 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