Отличная разница между методами any и find - PullRequest
5 голосов
/ 01 марта 2011

В groovy есть два метода, а именно any и find метод, который можно использовать в Картах.

Оба эти метода будут «искать» интересующий нас контент (то естьоба метода any и find возвращают, находится ли элемент в Map или нет, то есть они должны искать).

Но как они различаются в этом поиске?

Ответы [ 2 ]

3 голосов
/ 08 декабря 2016

Они на самом деле делают разные вещи. find возвращает фактический элемент, который был найден, тогда как any возвращает значение bool. Что вас смущает, так это отличная правда.

Любое неустановленное (нулевое?) Значение будет преобразовано в false

def x
assert !x

Так что, если вы просто проверяете false , то возвращенные значения из обоих методов будут служить одной и той же цели, поскольку по существу все объекты имеют неявное экзистенциальное логическое значение.

2 голосов
/ 05 ноября 2014
 (!list.find{predicate}) <> (!list.any{predicate})

Однако:

( list.find{predicate}) >< (list.any{predicate})

Если какой-либо из них не существует в Groovy API, и вы хотите добавить эту функцию в список metClass, любая реализация будет:

java.util.List.metaClass.any={Closure c-> 
     return delegate.find(c) != null

}

Находка более общая, чем любая

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