Подтвердить что ты не робот

Почему действия Grails должны быть объявлены как методы вместо закрытия и какая разница?

В grails 2.0 whats new http://grails.org/doc/2.0.0.RC1/guide/introduction.html#whatsNew в нем говорится:
1.1.3 Web Features Controller Actions as Methods It is now possible to define controller actions as methods instead of using closures as in previous versions of Grails. In fact this is now the preferred way of expressing an action.
Например:

// action as a method
def index() {
}
// action as a closure
def index = {

}

Почему это важно? Какая разница?

ОБНОВЛЕНИЕ: Я нашел эту дискуссию, в которой много говорится о сфере охвата и некоторых довольно волосатых вещах. http://grails.1312388.n4.nabble.com/Controller-actions-methods-or-closures-was-Re-grails-dev-Statically-typed-meta-programing-td3048287.html

Я думаю, мой вопрос также может быть следующим: какое преимущество имеют закрытия для действий?

4b9b3361

Ответ 1

Ответ здесь

Сверху ссылку

Методы использования вместо свойств Closure имеют некоторые преимущества:

  • Эффективная память
  • Разрешить использование контроллеров без состояния (Singleton scope)
  • Вы можете переопределить действия из подклассов и вызвать переопределенный метод суперкласса с помощью super.actionName()
  • Методы могут быть перехвачены стандартными механизмами проксирования, что сложно сделать с Closures, поскольку они являются полями.

Также есть аналогичный groovy вопрос здесь, который содержит несколько подробностей