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?
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)
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% 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:
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.
Tags und Links grails groovy grails-controller