2017-03-19 5 views
1

Hier passieren ist das, was ich zu tun versucht:Wie eine Funktionsliteral als Rückruf

void x(function int(int) f){ 
    f(555); 
} 

void main(){ 
    x(function int(int q){ }); 
} 

Die Fehlermeldungen sind verwirrend:

funcs.d(4): Error: basic type expected, not function 
funcs.d(4): Error: found 'int' when expecting '(' 
funcs.d(4): Error: basic type expected, not (
funcs.d(4): Error: function declaration without return type. (Note that constructors are always named 'this') 
funcs.d(4): Error: found 'f' when expecting ')' 

ich nichts von einer solchen Fehlermeldungen erhalten können.

Antwort

2

Tauschen Sie den Rückgabetyp mit dem Schlüsselwort function in x. Aus irgendeinem Grund sind sie in Literalen umgekehrt. Auch die Funktion, die Sie übergeben, gibt nichts zurück, obwohl es

void x(int function(int) f){ 
    f(555); 
} 

void main(){ 
    x((int q){ return 0; }); 
    // or 
    x(function int(int q){ return 0; }); 
    // or 
    x(q => 0); 
} 
zurückgegeben werden sollte
Verwandte Themen