Q1a: *
«распаковывает» массив...
создает диапазон.[]
создает коллекцию.Q1b: *n..1
распаковывает [4,3,2,1] в отдельные его части.Q1c: [4,3,2,1,n]
== [4,3,2,1,4]
Q2: я не знаю, почему здесь использовалось any
;each
работает так же хорошо, и имеет больше смысла в контексте.any
делает зацикливание на соединении, поэтому побочный эффект println
работает так, как задумано.
Обычно any
будет использоваться для определения того, удовлетворяет ли какой-либо элемент коллекции критерию,например:
[*n..1,n].any { it > 10 } // Returns false, no elements are > 10
[*n..1,n].any { it == 3 } // Returns true, because at least one element is 3
Последний оператор закрытия используется для определения, соответствует ли каждый элемент критериям.println
возвращает ноль, поэтому any
возвращает ложь.Это значение не используется и отбрасывается.
Единственная причина, по которой я могу подумать, что кто-то мог использовать any
, это избегать просмотра возвращаемого значения each
в консоли.each
возвращает исходную коллекцию.