D嵌套函数类型推断

D嵌套函数类型推断,d,type-inference,nested-function,D,Type Inference,Nested Function,有人知道SUBK是否会实施吗? 至少,他们的自动存储类? 谢谢 一般来说,自动功能有各种各样的问题,所以很可能是您无法做到的 void main() { auto bar() { return "hello world"; } writeln(bar()); } 因为auto的一个缺陷,而不是它的设计。我不确定具体的计划是什么,尽管我认为您应该能够使用auto作为嵌套函数的返回类型。在这两种情况下,都存在一个问题 但是,无论auto是否与嵌套函数一起工作,您都可以以类似的方式

有人知道SUBK是否会实施吗? 至少,他们的自动存储类?
谢谢

一般来说,自动功能有各种各样的问题,所以很可能是您无法做到的

void main()
{
    auto bar() { return "hello world"; }

    writeln(bar());
}
因为auto的一个缺陷,而不是它的设计。我不确定具体的计划是什么,尽管我认为您应该能够使用auto作为嵌套函数的返回类型。在这两种情况下,都存在一个问题

但是,无论auto是否与嵌套函数一起工作,您都可以以类似的方式声明委托:

void main()
{
    auto bar = () { return "hello world"; };

    writeln(bar());
}

因此,基本功能仍然存在,即使您正在寻找的确切语法目前不起作用。

请更具体一些。你说的主语是什么意思?我是说主语。void foo(){auto bar(){return 3.14;};};}不会编译,因为bar不能有自动存储类。我只是好奇是否至少有这样的增强计划。如果我理解正确,delegate或function关键字是不必要的?最好使用
const bar=…
,这样它的行为更像是一个真正的函数WRT lvalues。@Target san如果您想强制lambda函数是一个或另一个,通常只使用function或delegate关键字,而通常不需要。顺便说一句,如果你输入关键字,它将始终是一个委托,因此强制只是一种方式。我不确定规范是否强制要求如果你不将它标记为函数,它始终是一个委托-理论上编译器应该能够为你找到它-但目前,它确实总是根据我所能说的生成一个委托。但在某个时候,情况可能会发生变化。我认为如果不指定它是哪一个,那么依赖它作为委托或函数指针不是一个好主意。不过,在大多数情况下,我认为这并不特别重要。如果你真的在乎,你可以随时标记它。