Если условие выполняется, даже если оно ложно? - PullRequest
0 голосов
/ 22 февраля 2012
def findFdrsWithMaturityYear(year){
       def fdrs = Fdr.findAll()
       def foundFdrs = new ArrayList<Fdr>()
        def foundYear
        fdrs.each {
            foundYear = DateUtils.getYearFromDate(it.maturityDate)
            if (year.toString() == foundYear.toString()){ // line 7
                foundFdrs.add(it)  // line 8
            }
        }
        return foundFdrs
    }

Выше - отличный код. Я отлаживаю его с помощью intellijidea 11, когда я достигаю строки № 7, я обнаружил, что даже если условие ложно, оно переходит к строке № 8, но список foundFdrs не увеличивается, так как он добавляет один элемент в список. Я использую этот код в веб-приложении Grails, каждый раз, когда я запускаю это веб-приложение, я получаю пустой список foundFdr, даже если условие в строке № 7 выполняется. Я также протестировал приведенный выше код, создав тест интеграции Grails, тест прошел успешно, то есть я получил список foundFdrs с некоторыми элементами, но не в моем приложении Grails. Где проблема?

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

Я подозреваю, что, несмотря на то, что отладчик показывает эту строку как выполненную, на самом деле она не выполняется

Не знаю, почему вы делаете toString для обеих переменных ...

0 голосов
/ 22 февраля 2012

Безопасным вариантом будет просто использовать StringUtils # равно

, так как две строки могут сравниваться или не сравниваться с помощью "=="

0 голосов
/ 22 февраля 2012

Я предполагаю, что проблема заключается в условии "если".У вас есть year.toString () == foundYear.toString (), который по сути говорит "if (string == string)", однако оператор == не может быть перегружен для сравнения строк в Groovy (я действительно не знаю Groovy,но я программирую на Java и Scala).Просмотрите документацию Groovy и посмотрите, есть ли какой-либо метод "равно" для сравнения строк, так как я очень сомневаюсь, что оператор == сделает то, что вы хотели.Надеюсь, это немного поможет!

Поскольку Groovy является языком, похожим на Java, вы можете проверить это = http://www.devdaily.com/java/edu/qanda/pjqa00001.shtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...