【问题标题】:Usage of the ref function in MLML 中 ref 函数的使用
【发布时间】:2013-04-14 14:22:48
【问题描述】:

考虑到 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

【问题讨论】:

    标签: sml ml


    【解决方案1】:

    val ref x = ref 9x 定义为 9 - 就像您写了 val x = 9 一样。这是因为ref 是一个构造函数,所以它的模式匹配值ref 9 与模式ref x,将x 绑定到9。当然这样写而不是仅仅写val x = 9 很少感觉。

    当您编写ref x := ref 12 时,您会创建一个新的refint ref ref 类型)来引用x。然后您立即将新的ref 更改为引用ref 12 而不是x。由于您创建的新 ref 永远不会存储在您可能访问的任何地方,因此不会产生明显的影响。

    【讨论】:

    • 有趣的是ref可以在SML模式匹配中解包。 “ref 是一个构造函数”似乎没有在任何地方记录
    • @newacct 老实说,我不完全确定这是标准行为还是特定于实现(而且我没有方便检查的标准)。
    【解决方案2】:

    @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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2019-04-09
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多