1
Я пытаюсь получить сам начал с Groovy, я пытаюсь выяснить число в пределах от 1 до 100, которые делятся на 7.Groovy Работа со списками и диапазоны
def numbers=[1..100]
def divisibleBy7 = numbers.findAll {it % 7 == 0 }
divisibleBy7.each{println it}
Можете ли вы сказать мне, что я «Я делаю неправильно. Сообщение об ошибке из groovy console не очень понятно
Exception thrown
groovy.lang.MissingMethodException: No signature of method: groovy.lang.IntRange.mod() is applicable for argument types: (java.lang.Integer) values: [7]
Possible solutions: pop(), min(), max(), add(java.lang.Object), add(java.lang.Object), add(int, java.lang.Object)
at divisibleBy7$_run_closure1.doCall(divisibleBy7.groovy:2)
at divisibleBy7.run(divisibleBy7.groovy:2)
Thanks @jstrater. Исправьте меня Я ошибаюсь def numbers = 1..100 дает мне список, содержащий числа от 1 до 100. Таким образом, def numbers = 1..100 эквивалентно def numbers = [1,2,3,4,5,6 , 7,8, ...., 100] –
@ mahtab-alam Добро пожаловать. Это в основном верно. Диапазоны - это расширение списка. Когда вы найдете findAll или .each, он будет вести себя так же, как и список. Вы даже можете попробовать '1..5 == [1,2,3,4,5]' в groovy console и он возвращает true; однако, '(1..5) .class == [1,2,3,4,5] .class' будет ложным. Для получения дополнительной информации см. [Docs for Range] (http://docs.groovy-lang.org/latest/html/gapi/groovy/lang/IntRange.html) – jstrater