D 中的函数命名空间问题

Function namespacing issues in D

假设我有一个带有成员函数 bar() 的 class Foo。我还有一个完全不相关的函数,它恰好也被命名为 bar()。

class Foo {
    /* ... */
    void bar() {
        /* ... */
    }
}

void bar() { /* ... */ }

似乎从 Foo 内部对 bar() 的任何调用都默认为成员函数。

如何从 Foo 内部调用非成员函数?

像这样:

.bar();

领先的.将强制编译器查看模块级范围。

您也可以使用完全限定名称:module_name.bar(),其中 module_name 是模块的名称(默认情况下,文件名不带 .d 扩展名)。