Что такое Groovy? - PullRequest
       4

Что такое Groovy?

0 голосов
/ 27 февраля 2019

У меня есть коллекция, с которой я обрабатываю removeIf {} в Groovy.Внутри блока у меня есть доступ к некоторому it идентификатору.Что это и где это задокументировано?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Если вы создаете замыкание без явного списка аргументов, по умолчанию используется единственный аргумент с именем it.Вот пример, который можно запустить в консоли Groovy

Closure incrementBy4 = { it + 4 }

// test it
assert incrementBy4(6) == 10

. В приведенном выше примере замыкание идентично

Closure incrementBy4 = { it -> it + 4 }

. Вот еще один пример, в котором используется removeIf

*.1010 *
0 голосов
/ 27 февраля 2019

it - неявная переменная, которая предоставляется в замыканиях.Это доступно, когда у замыкания нет явно объявленного параметра.

Когда замыкание используется с методами сбора, такими как removeIf, it будет указывать на текущий элемент итерации.

Это как если бы вы заявили следующее:

List<Integer> integers = [1, 2, 3]
for(Integer it: integers) {print(it)}

Когда вы используете each вместо этого (и это пример), вы можете получить it неявно при условии:

integers.each{print(it)} //it is given by default

Или

integers.removeIf{it % 2 == 0} //it is the argument to Predicate.test()

it будет последовательно принимать значения 1, 2 и 3 по ходу итераций.

Можно, конечно, переименовать переменную с помощьюобъявление параметра в замыкании:

integers.each{myInteger -> print(myInteger)}

В этом случае Groovy не предоставляет неявную переменную it. Документация содержит более подробную информацию

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