是否可以在SML中更新等于另一个引用的引用?这可能是一个非常愚蠢的问题,但我似乎无法理解它。例如,请考虑以下两个引用:
val x1 = ref(NONE);
val x2 = ref(NONE);
(*update so that x1 = x2; returns true*)
如何将x1更新为等于x2。我不是在谈论将x2指向的内容放入x1,我想知道我是否可以将它们设置为相等,所以当我测试相等性时(eq x1 = x2),结果为真。
我想过让他们指向一个新的记忆位置。
val z = NONE
x1 := z
x2 := z
这不起作用。我猜我应该再次检查SML中的引用。谢谢你的帮助。
答案 0 :(得分:3)
ML中没有赋值给变量。因此,以两个不同值开头的两个变量永远不会相等。 ref NONE
计算指向新的可变引用对象的指针;因此,对ref
的两次调用将评估指向不同对象的指针。
这是一个参考并不真正相关。它与任何其他类型相同:
val x1 = 2;
val x2 = 3;
(*update so that x1 = x2; returns true*)
x1 = x2
永远不会成真。 (至少不是那个x1
和那个x2
;如果你定义一个新的x1
,那就是另一个故事。)
答案 1 :(得分:0)
我知道你可以有两个参数相同的唯一方法是它们是否相同:
val x1 = ref NONE
val x2 = x1
将导致x1 = x2
为真。