Генерируйте список из другого списка, преобразовывающего каждый элемент на Groovy

У меня есть следующий код Контроллера

    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 не позволяет его?

19
задан noah 22 January 2010 в 18:33
поделиться

2 ответа

Разве вы не можете просто использовать оператор по распространению, и сделать:

lines = rawLines*.name

(см. http://docs.grovy-lang.org/latest/html/documentation/index/index .html # _spread_operator )

27
ответ дан 30 November 2019 в 03:16
поделиться

Ну, если вы используете Grails, почему вы не просто используете класс модели вместе с методом Findall?
Использование простого RAW SQL должна быть сделана на исключительных случаях.

0
ответ дан 30 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: