У меня есть следующий код Контроллера
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 */
Я не могу держать впечатление отдельно, что существует, вероятно, некоторый способ сделать это более изящным способом, чем-то подобным пониманию списка в Python:
lines = [ l.name for l in db.rows("SELECT name FROM LINES") ]
Имея необходимость объявить пустой список и затем заполнить это не кажется лучшим способом сделать вещи... Действительно ли возможно сделать что-то вроде этого, или Groovy не позволяет его?
Разве вы не можете просто использовать оператор по распространению, и сделать:
lines = rawLines*.name
(см. http://docs.grovy-lang.org/latest/html/documentation/index/index .html # _spread_operator )
Ну, если вы используете Grails, почему вы не просто используете класс модели вместе с методом Findall?
Использование простого RAW SQL должна быть сделана на исключительных случаях.