Я не уверен, когда мне нужно использовать оператор с расширенными точками. Если у меня есть список, например:
def animals = ['ant', 'buffalo', 'canary', 'dog']
Поскольку как animals
, так и члены списка имеют метод size(), то для того, чтобы вызвать метод для элементов списка (а не самого списка), мне нужно использовать:
animals*.size()
а не:
animals.size()
Однако рассмотрим следующее выражение, которое возвращает список имен методов, доступных в классе String
String.metaClass.methods.name
Как Groovy знает (без использования оператора с расширением-точкой), что я хочу, чтобы свойство name
извлекалось из каждого элемента списка, возвращаемого String.metaClass.methods
, а не самого списка? Есть ли набор правил для использования в этом случае, например:
- Если метод/свойство существует в списке, вызовите его в списке
- В противном случае попробуйте вызвать его для каждого элемента List
Спасибо, Дон