如何避免Rebol中对象函数和全局函数之间的名称冲突?

时间:2014-04-08 22:41:38

标签: object namespaces conflict rebol

我有一个名为open的函数的对象需要调用全局open

obj: make object! [
    open: func [fn] [
        client: open fn ...
    ]
]

堆栈溢出时,这种情况很糟糕......

那么,如何访问对象open内的全局open? (请不要告诉我"更改名称": - )

2 个答案:

答案 0 :(得分:5)

在Rebol 3中,您可以使用lib/open来引用内置的open功能。

lib是一个对象(在Rebol-lingo中有时也称为“上下文”),它包含所有公开导出的函数,包括内置函数。 lib上下文的全名是system/contexts/lib(因此您也可以使用system/contexts/lib/open来引用内置的open,但因为这是一个满口的便利还提供了快捷方式lib

另请参阅Brian Hawley's answer regarding "user-defined words"Carl Sassenrath's post on the basic contexts of R3了解更多技术细节。

答案 1 :(得分:3)

在Rebol 2中,您可以使用system/words/open。如果查看Rebol 2协议的来源,您会看到为这些单词定义的快捷方式,以便它们不会与协议中的相同命名单词冲突。