2010-11-18 16 views
3

Weiß jemand, ob Subj implementiert wird? Zumindest, Auto Storage-Klasse für sie? Danke!D verschachtelte Funktionen Typ Rückschluss

+2

Bitte präzisieren. Was meinst du mit subj? –

+0

Ich meine, dass constr. void foo() {auto bar() {return 3.14; }; } wird nicht kompiliert, da der Balken keine automatische Speicherklasse haben kann. Ich war nur neugierig, ob zumindest eine solche Erweiterung geplant ist. –

Antwort

4

Es gibt verschiedene Probleme mit Auto-Funktionen im Allgemeinen, so könnte es sehr gut sein, dass Sie nicht wegen eines Fehlers mit Auto

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

    writeln(bar()); 
} 

tun können, anstatt sie wie vorgesehen zu sein. Ich bin nicht sicher, was die genauen Pläne dafür sind, obwohl ich denken würde, dass Sie in der Lage sein sollten, Auto als den Rückgabetyp einer geschachtelten Funktion zu verwenden. Es ist ein enhancement request in jedem Fall darauf.

Doch unabhängig davon, ob die automatische mit verschachtelten Funktionen arbeitet, Sie können einen Delegaten in ähnlicher Weise erklären:

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

    writeln(bar()); 
} 

So ist die Grundfunktionalität ist immer noch da, auch wenn die genaue Syntax, die Sie gesucht haben funktioniert derzeit nicht.

+0

Wenn ich richtig verstehe, ist Delegieren oder Funktion Schlüsselwort nicht notwendig? –

+0

Es könnte besser sein, dass 'const bar = ... ', so dass es eher wie eine echte Funktion WRT lvalues ​​wirkt. – BCS

+0

@ Target-San Normalerweise verwenden Sie das Schlüsselwort function oder delegate nur, wenn Sie eine Lambda-Funktion erzwingen wollen, und das ist normalerweise nicht nötig. –

Verwandte Themen