为什么D不允许嵌套函数的重载?

时间:2014-08-04 19:33:51

标签: windows d dmd

我使用嵌套函数来破坏我的代码的一小部分但是当我需要扩展一个函数以支持不同类型的参数时,我得到了一个重新声明的编译错误:

  

声明X已经是无法解决的

这是D的设计师(如果是这样,为什么?)或者这种功能之一,他们没有实施,只是因为“太少使用”?

重现错误的代码示例:

void foo()
{
    int baa(int a)
    {
        return a * 2;
    }

    int baa(int a, int b)
    {
        return a + b;
    }
}

1 个答案:

答案 0 :(得分:2)

您将找到所有详细信息并跟踪进度 https://issues.dlang.org/show_bug.cgi?id=12578

  
      
  1. 本地功能在其范围之外不可见。它们的使用非常有限,因此对过载能力没有任何好处。

  2.   
  3. 本地范围不允许转发引用,这意味着任何使用重载的行为都会受到相当的限制。

  4.         

    克服这一点并非不可能,这似乎毫无意义。

         

    - Walter Bright