2012-02-09 14 views
21

Trong grails 2.0 whats mới http://grails.org/doc/2.0.0.RC1/guide/introduction.html#whatsNew
nó nói:
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.
Ví dụ:Tại sao hành động grails nên được khai báo là phương pháp thay vì đóng cửa và sự khác biệt nào?

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

} 

Tại sao điều này là quan trọng? Điều gì khác biệt nó làm?

CẬP NHẬT: Tôi đã tìm thấy cuộc thảo luận này thảo luận rất nhiều về phạm vi và một số nội dung đẹp mắt. http://grails.1312388.n4.nabble.com/Controller-actions-methods-or-closures-was-Re-grails-dev-Statically-typed-meta-programing-td3048287.html

Tôi đoán câu hỏi của mình cũng có thể là điều này: lợi ích của việc đóng cửa đối với hành động là gì?

Trả lời

24

Câu trả lời là here

Từ trên liên kết

Tận dụng phương pháp thay vì tính Đóng cửa có một số ưu điểm:

  1. Memory hiệu quả
  2. Cho phép sử dụng các bộ điều khiển không quốc tịch (phạm vi singleton)
  3. Bạn có thể ghi đè hành động từ các lớp con và gọi phương thức siêu lớp được ghi đè bằng super.actionName()
  4. Phương pháp có thể bị chặn với các cơ chế proxy chuẩn, một điều phức tạp khi thực hiện với các Đóng cửa vì chúng là các trường.

Cũng có một câu hỏi tương tự groovy here rằng có một số chi tiết

+12

Thú vị, vậy tại sao họ lại bao giờ đóng cửa? – Mikey

Các vấn đề liên quan