`context`和`object`有什么区别?

时间:2017-01-01 14:28:32

标签: rebol rebol3 rebol2 red

在Rebol 3中,有objectcontext函数。

差异的目的是什么?

注意:供参考,红色,两者相同,object不存在 在rebol 2中

上下文:没有双关语

最初,我想知道为什么我们有context而不是make object!

现在,在了解了用于制作对象的object字之后, 我很想知道他们为什么会有所不同以及理由因为make同样的事情而有所不同。

请注意,在rebol3中:

object: make function! [[
    "Defines a unique object."
    blk [block!] "Object words and values (modified)"
][
    make object! append blk none
]]

append none到块。为什么?这只是一个小小的差异吗? 它应该得到一个单独的问题吗?

在所有3中:

context: make function! [[
    "Defines a unique object."
    blk [block!] "Object words and values (modified)"
][
    make object! blk
]]

P.S。版本之间的构造略有不同

2 个答案:

答案 0 :(得分:5)

context历来在Rebol2中作为make object!的快捷方式引入,并且更好地表示使用该对象提供definitionally scoped命名空间来组织用户代码的意图。

在Rebol3中添加了

object,以便为快捷方式提供更自然的名称,并且在使用collect-words动态构造对象时更有用。

Red应该使用Rebol3 object定义,因为它提供了方便的额外功能。

答案 1 :(得分:3)

contextobject提供相同的功能。 context来自Rebol2,我认为它存在于Rebol3和Red中以实现向后兼容。

object存在于Rebol3和Red中且几乎相同(在R3版本中它支持object [a: b: c:]样式,没有太大区别)

所以你可以使用它们中的任何一个。我个人喜欢context