2016-04-27 51 views
0

Ich kann nicht herausfinden, was ist der Unterschied zwischen geschweifte Klammer und Eckige Klammer in Groovy/Grails Beispiel:geschweifte Klammer vs Eckige Klammer

[bookInstanceList:Book.list()] 

und:

{ 
    subject blank: false 
    content blank: false, maxSize: 2000 
} 

kann jemand helfen mir bitte?
Danke

+0

Die hier finden erste ist ein 'list' und das zweite ist ein' closure'. –

+0

Vielen Dank für Ihre Antwort, ist nicht eine Schließung "einige Operationen zu tun"? – hereForLearing

+0

Aber was ist die wirkliche Frage? Diese beiden sind völlig verschiedene Dinge. Eine ist, wie Sie Daten von C an View übergeben und eine andere ist eine Reihe von Constraints in Domain. –

Antwort

2

Wie in den Kommentaren ist der erste wies darauf hin, eine Map und das zweite ist ein closure.

Sie sind in keiner Weise gleich oder ähnlich. Sie scheinen verwirrt zu sein, weil Sie davon ausgehen, dass die closure eine Art von Name-Wert-Paar ist. Was in diesem Fall aufgrund der Einschränkungen DSL zu sein scheint.

Um zu verstehen, wie diese closure verarbeitet wird, müssten Sie tiefer in die DSL-Einschränkungen eintauchen und sehen, wie es Dinge wie fehlende Methoden und fehlende Eigenschaften verwendet. Es ist kein einfaches Thema, um es kurz zu erklären.

+0

Ok danke :) – hereForLearing

+0

Ich denke, Sie müssen Ihren Kommentar bearbeiten, haben Sie "Liste geschrieben "statt" Map " – hereForLearing

+0

Korrekt, aber ich kann meinen Kommentar nicht bearbeiten. Ich brauche heute Morgen mehr Kaffee;) –

0

Groovy Liste und Karte:

Erste ist Karte. [] (eckige Klammer) in groovy wird zur Erstellung einer Liste oder Karte verwendet.

Beispiel List:

  • [] - Eine leere Liste
  • [1,2,3,4] - Eine Liste von ganzzahligen Werten
  • [ 'Angular', ‚Groovy ‘, 'Java'] - Eine Liste von Zeichenketten
  • [1, 2, [3, 4], 5] - eine verschachtelte Liste

Beispiel für Karte:

  • [:] - Eine leere Karte.
  • [key: "Wert"] - mit Schlüsselkarte und Werte

Groovy Verschluss:

Das zweite ist groovy DSL. Wir können mehrere Strategien verwenden, um DSL zu erstellen, aber in Grals Domain-Constraint-Blöcken haben wir dafür groovy closures verwendet. Sie können mehr Details über DSL

http://docs.groovy-lang.org/latest/html/documentation/core-domain-specific-languages.html

Verwandte Themen