groovy: протестировать массив в одну строку - PullRequest
1 голос
/ 10 марта 2012

Я хочу проверить и убедиться, что все в массиве проходит мою проверку, вот как я сейчас делаю это и мой фантазийный код, который приводит к сбою компилятора.1005 * Fantasy:

def mylist = [1,2,3,4]
if(mylist*>0)println "Everything was greater than 0, but this sugar doesn't work."

Есть ли правильный способ применить тест if ко всему списку одной строкой?

Ответы [ 2 ]

4 голосов
/ 10 марта 2012

Используйте метод every :

myList.every { it > 0 }

Оператор, который вы пытались использовать, это "точка с расширением", которая равна *. (не *).Вам нужно будет использовать имя метода (compareTo), которое принимает аргумент.Но map это не то, что вы пытаетесь сделать.

Вы не пытаетесь применить метод ко всем членам mylist, вы пытаетесь агрегировать результат примененияметод для всех членов, больше похоже на:

mylist.inject(true) { acc, n -> acc && n > 0 }
1 голос
/ 10 марта 2012

Это работает для меня ...

def mylist = [1,2,3,4]
if(!mylist.find {it < 1}) println "Everything was greater than 0, and this sugar DID work."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...