2012-02-09 12 views
21

w Grails 2.0 co nowego http://grails.org/doc/2.0.0.RC1/guide/introduction.html#whatsNew
mówi:
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.
Na przykład:Dlaczego akcje grails powinny być zadeklarowane jako metody zamiast zamknięcia i jakie to ma znaczenie?

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

} 

Dlaczego to jest ważne? Jaką to robi różnicę?

AKTUALIZACJA: Znalazłem tę dyskusję, która mówi dużo o zakresie i trochę ładnych owłosionych rzeczach. http://grails.1312388.n4.nabble.com/Controller-actions-methods-or-closures-was-Re-grails-dev-Statically-typed-meta-programing-td3048287.html

Domyślam się, że moje pytanie może być również następujące: jaka korzyść ma zamknięcie dla działań?

Odpowiedz

24

Odpowiedź jest here

Od wyżej linku

wykorzystaniu metod zamiast właściwości zamknięcie ma pewne zalety:

  1. pamięci wydajny
  2. Pozwól wykorzystanie bezpaństwowców kontrolerów (zakres Singleton)
  3. Można nadpisywać akcje z podklas i wywoływać nadpisaną metodę nadklasy za pomocą super.actionName()
  4. Metody można przechwytywać za pomocą standardowych mechanizmów proxy, co jest skomplikowane w przypadku Closures, ponieważ są to pola.

Również tam podobne pytanie Groovy here że ma trochę więcej szczegółów

+12

interesujący, więc dlaczego byli oni kiedykolwiek zamknięcia? – Mikey

Powiązane problemy