Равное поведение в замыкании Грааля - PullRequest
0 голосов
/ 13 марта 2019

$ grails -v |Версия Grails: 3.3.9

|Версия JVM: 1.8.0_161

Я написал класс util в папке 'src /', а не в grails-app.

    def getSelectedColumnCfgs() {
        def cfgs = cfgFile.readLines().findAll { it.startsWith('COLUMN:') }.collect { line ->
            line[7..-1].trim().split(',').collectEntries {
                it.trim().split('=').collect { it.trim() }
            }
        } // We get a List<Map<String, String>>

        cfgs.each { cfg ->
            def column = nsTable.columns.find {
                it.name == cfg.ns_columm //equals condition behave weird
            }
            //something else
        }
    }

В обычном случае при закрытии поиска возвращается объект столбца, имя которого равно cfg.ns_columm (карта), но это не так.Поэтому я попытался выполнить следующее сравнение:

//Doesn't work
columns.find {
    println it.name == cfg.ns_column //it dose print a 'true' when they matched
    it.name == cfg.ns_column
}


//Works! But why?
columns.find {
    boolean flag = it.name == cfg.ns_column
    flag
}

Я думаю, в некоторых случаях функция find будет переопределена GORM, но этот код не находится под grails-app, а Column не является классом домена, поэтому любойключ?

...