Warum benötigt Grails die Verwendung von 'def' anstelle von 'void' in einem Controller?

8

Nehmen Sie den folgenden Controller:

%Vor%

Warum ist test mit def test() { anstelle von etwas wie void test() { definiert? Wird das Schlüsselwort def nicht nur für Closures oder Funktionen in einem Skript (d. H. Nicht in einer Groovy-Klasse) verwendet?

    
Tom Marthenal 12.02.2012, 06:00
quelle

2 Antworten

6

Burts Antwort ist korrekt, aber das eigentliche Problem, das ich hatte, ist, dass ich missverstanden habe, was def ist. Anstatt wie var in JavaScript zu sein, können Sie sich das wie Object in Java vorstellen.

Ich dachte, dass die Verwendung von def war wie (JavaScript)

%Vor%

in Wirklichkeit ist es genau wie (Java)

%Vor%

Es ist keine andere Art von Funktion / Schließung, es ist wie ein Rückgabetyp- def kann auf jedes Objekt angewendet werden (Groovy hat keine Datengrundelemente, also ist jeder Wert anders als in Java auch ein Objekt).

Es hilft meinem Java-Gehirn, an

zu denken %Vor%

als

%Vor%     
Tom Marthenal 12.02.2012, 07:25
quelle
16

render ist ungültig, in diesem Fall könnte die Aktion test void sein, aber für den Fall, dass Sie eine Modellzuordnung zurückgeben, muss die Aktion nicht void sein:

%Vor%

Da einige Aktionen einen Wert zurückgeben können und andere nicht, muss die allgemeine Syntax def zurückgeben, um alle Varianten zu unterstützen.

    
Burt Beckwith 12.02.2012 06:59
quelle