2008-10-17 24 views
5

Tại sao phải đóng nội tuyến vì vậy hiếm khi được sử dụng trong Actionscript? Chúng rất mạnh mẽ và tôi nghĩ khá dễ đọc. Tôi hầu như không bao giờ nhìn thấy bất cứ ai sử dụng chúng vì vậy có lẽ tôi chỉ nhìn vào mã sai. Google sử dụng chúng trong API Google Maps cho các mẫu Flash, nhưng tôi nghĩ đó là nơi duy nhất tôi đã nhìn thấy chúng.Cách sử dụng các đóng cửa nội tuyến/đại biểu chức năng trong Actionscript

Tôi ủng hộ chúng vì bạn có quyền truy cập vào các biến cục bộ trong phạm vi xác định chúng và bạn giữ logic trong một phương pháp và không kết thúc với nhiều hàm mà bạn phải đưa ra tên.

Có bất kỳ sản phẩm khai thác nào sử dụng chúng không? Họ làm việc khá nhiều giống như trong C#.

Tôi thực sự chỉ phát hiện ra rằng AS3 hỗ trợ họ, và tôi khá bực mình vì tôi đã nghĩ rằng tôi đọc rằng họ đã không được chấp nhận trong AS #. Vì vậy, tôi trở lại để sử dụng chúng!

private function showPanel(index:int):void {  

_timer = new Timer(1000, 1);   
_timer.addEventListener(TimerEvent.TIMER, function(event:Event):void 
{ 
    // show the next panel 
    showPanel(index++); 
}); 

Trả lời

3

Lưu ý lớn nhất cần lưu ý là thường 'này' không được xác định trong đóng nội tuyến. Đôi khi bạn có thể đặt 'cái này', nhưng không phải lúc nào cũng đúng 'cái này' mà bạn sẽ có sẵn để đặt, tùy thuộc vào cách bạn sử dụng chúng. Tuy nhiên, tôi muốn nói rằng hầu hết mã Flex mà tôi đã làm việc đã đóng cửa nội dòng một cách mãnh liệt trong toàn bộ mã - kể từ khi gọi lại là cách duy nhất để hoàn thành công việc và thường bạn không cần đưa ra toàn bộ chức năng riêng biệt.

Thỉnh thoảng khi hàm lồng nhau nhận được quá nhiều, tôi sẽ chia nhỏ ra một chút với các biến chức năng trong hàm; điều này giúp tôi tổ chức một chút bằng cách đưa nhãn cho các hàm nhưng vẫn giữ một số đặc điểm của việc đóng nội tuyến (ví dụ như truy cập vào các biến cục bộ).

Hy vọng điều này sẽ hữu ích.

1

Tôi tìm thấy những gì ban đầu khiến tôi không muốn làm điều này, nhưng tôi đã quên mất các chi tiết:

http://livedocs.adobe.com/flex/3/html/16_Event_handling_6.html#119539

(Đây là những gì Mitch nói - như xa như từ khóa 'này' là ra khỏi phạm vi)

Vì vậy, đó là câu trả lời của Adobe, tuy nhiên tôi có nhiều khả năng cần phải tham khảo các biến cục bộ hơn 'this'.

Người khác giải thích đề xuất của Adobe như thế nào?

2

Một vấn đề nữa là bộ sưu tập rác bị hỏng khi nói đến đóng cửa (ít nhất là trong Flash 9). Ví dụ đầu tiên của một đóng cửa cụ thể (từ quan điểm từ vựng) sẽ không bao giờ được thu gom rác - cùng với bất kỳ thứ gì khác được tham chiếu bởi việc đóng cửa trong chuỗi phạm vi.

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