在Rebol2中,如果全局上下文是system/words
,为什么会得到这个结果?
>> X: 0
== 0
>> same? system/words bound? 'X
== false
在这种情况下的背景是什么?还是same?
在全局环境下使用存在问题?(我尝试重复第二个命令,以防它更改了上下文)
我认为这是一种口译员的怪癖。在Rebol 3中您不会遇到它。事实是,bound?
Rebol 2中的结果(结果)与“正常对象/上下文”有所不同,只是一些“类型位”。这种差异导致的意外结果same?
。您可以获得预期的结果,例如,如下所示:
same? bound? 'X bound? 'system
顺便说一下,如果尚未添加到测试套件中,这可能是一个很好的测试。(在Rebol3中没有全局上下文,因此您可能需要使用一个对象进行测试才能同时适用于Rebol2和Rebol3)。该测试可能如下所示:
o: make object! [a: none]
same? o bound? in o 'a
如上所述,此测试在Rebol 2中失败,而在Rebol 3中通过。
与上述测试相反,此测试在Rebol 2和Rebol 3中均成功:
o: make object! [a: none]
same? bound? first bind [a] o bound? first bind [self] o
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句