В Groovy замыкания используются практически везде, и единственная проблема с ними состоит в том, что если вы начитаете их использовать каждый день, они могут показаться вам несколько пресными. В этом месяце приглашенные авторы Кен Баркли и Джон Севедж покажут, как разнообразить стандартные рецепты замыканий, например, дополняя стандартные замыкания и шаблоны разработки Visitor щепоткой карринга.
Метод curry()
был придуман Хаскеллом Карри (Haskell Curry) и реализован в языке Groovy еще до выхода версий, совместимых с JSR.
С момента основания рубрики Практически Groovy уже почти год назад, я предоставил вам несколько возможностей познакомиться с замыканиями. Когда я первый раз написал о Groovy в рамках alt.lang.jre ("Feeling Groovy", август 2004 г.), я познакомил вас с синтаксисом замыканий Groovy, а в выпуске последнего месяцая показал, как изменился этот синтаксис при недавних обновлениях, совместимых с JSR. Из пройденных вами материалов вы знаете, что замыкания в Groovy представляют собой блоки кода, на которые можно ссылаться, которым можно задавать параметры и которые могут быть переданы в качестве параметра метода и возвращены в качестве значения вызовом метода. Что более важно - они также могут быть параметрами и возвращаемыми значениями других замыканий. Поскольку замыкания - это объекты типа Closure
, они также могут быть свойствами класса и элементами коллекции.
Хотя и всё это нельзя назвать совсем уж пресным на самом деле, методики замыканий (наверное, я должен был бы сказать рецепты), с которыми вы познакомитесь в этом месяце, будут определенно поострее, чем все, что вы пробовали до этого. Приглашенные авторы Джон Севедж и Кен Баркли провели несколько любопытных экспериментов с методом curry()
в замыканиях Groovy, и в этом месяце вам посчастливилось попробовать, что же они приготовили.
Замыкания, приправленные каррингом от Баркли и Севеджа, не только пробудят аппетит к использованию знакомых операций, таких как композиции и шаблоны разработки Visitor, они также откроют двери в функциональное программирование в Groovy. Представьте себе, что вы готовите рагу с Groovy.