【问题标题】:How to avoid name conflict between object function and global function in Rebol?如何避免 Rebol 中的对象函数和全局函数之间的名称冲突?
【发布时间】:2014-04-08 22:41:37
【问题描述】:

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

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

这显然会因堆栈溢出而失败...

那么,如何访问全局 open 内部对象 open ? (请不要告诉我“改名”:-)

【问题讨论】:

    标签: object namespaces conflict rebol


    【解决方案1】:

    在 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。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 1970-01-01
        • 2016-03-27
        • 2021-04-15
        • 2011-11-07
        • 1970-01-01
        • 2022-07-28
        • 2021-09-03
        • 1970-01-01
        相关资源
        最近更新 更多