Erzeugen einer Liste aus einer anderen Liste die Umwandlung jedes element auf Groovy
Habe ich den folgenden code auf einer Steuerung
def db = new Sql(dataSource)
def rawLines = db.rows("SELECT name FROM LINES")
def lines = []
/*(db.rows returns the values as [NAME:value] */
rawLines.each {
lines.add(it.name)
}
/*Then, use lines */
Ich kann nicht entfernt den Eindruck, dass es wohl einige Weg, dies zu tun in einem eleganten Weg, etwas ähnliches wie eine list comprehension in Python:
lines = [ l.name for l in db.rows("SELECT name FROM LINES") ]
Müssen deklariert eine leere Liste und füllen es scheint nicht die besten Weg, Dinge zu tun...
Ist es möglich, so etwas zu tun, oder Groovy nicht zulassen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht einfach verwenden der spread-operator, und tun:
(siehe http://docs.groovy-lang.org/latest/html/documentation/index.html#_spread_operator)
tim_yates' Antwort ist eine saubere Lösung, wenn Sie wollen, rufen Sie eine Methode (oder property) auf jedes element der Liste in der Reihenfolge, um Sie zu transformieren z.B.:
aber wenn Sie wollen, rufen Sie eine Methode aus einem anderen Objekt oder tun Sie etwas mehr Komplex, die Sie verwenden können
collect
:Gut, Wenn Sie mit grails, warum bist du nicht einfach über die model-Klasse zusammen mit der findAll-Methode?
Mit reinen raw-SQL getan werden sollte, auf außergewöhnliche Fälle.