2014-11-23 40 views
6

Cùng với đóng cửa, tôi thường đọc rằng một cái gì đóđóng trên một cái gì đó khác làm phương tiện để giải thích bao đóng.Chính xác "đóng cửa" nghĩa là gì?

Hiện tại, tôi không gặp khó khăn gì nhiều trong việc hiểu các bao đóng, nhưng "đóng cửa" dường như là một khái niệm cơ bản hơn. Nếu không, người ta sẽ không nhắc đến nó để giải thích về việc đóng cửa, phải không?

định nghĩa chính xác của đóng cửa trên là gì, và cái gì đó cái gì khác là gì? Thuật ngữ này đến từ đâu?

+1

thường có nghĩa là "thêm phần tử thêm vào tập hợp và sau đó * thêm một số phần tử *" - phần * khác * sẽ đảm bảo rằng thuộc tính của tập hợp vẫn hợp lệ - trong trường hợp này là môi trường bạn nhận được giá trị của mình từ - bạn thêm những cái, và tất cả những gì bạn có thể cần cho chúng, bạn đang sử dụng bên trong lambda cho nó - đó là đóng cửa – Carsten

Trả lời

8

xem xét:

something closes over something else 
|_______| |_________| |____________| 
    |   |    | 
subject  verb  object 

đây:

  1. Đối tượng là việc đóng cửa. Một đóng là một hàm.
  2. Việc đóng cửa “ đóng trên ” (như bao gồm) tập hợp các biến miễn phí của nó.
  3. Đối tượng là tập hợp các biến miễn phí của việc đóng.

Xem xét một chức năng đơn giản:

function add(x) { 
    return function closure(y) { 
     return x + y; 
    }; 
} 

đây:

  1. Các hàm có tên add chỉ có một biến, tên x, mà không phải là một biến miễn phí bởi vì nó được định nghĩa trong phạm vi của add chính nó.
  2. Các hàm có tên closure có hai biến, tên xy, trong đó x là một biến miễn phí bởi vì nó được xác định trong phạm vi add (không closure) và y không phải là một biến miễn phí bởi vì nó được định nghĩa trong phạm vi của closure.

Do đó, trong trường hợp thứ hai hàm có tên closure được cho là “ gần hơn ” biến có tên x.

Do đó:

  1. Các hàm có tên closure được cho là một đóng cửa của biến tên x.
  2. Biến có tên x được cho là một giá trị cao của hàm có tên closure.

Đó là tất cả.

+2

(1) Tất cả điều này có thể được nói trong vài từ: * "A đóng trên B" == " B là biến miễn phí của A ", trong đó các biến tự do là các biến xuất hiện trong phần thân của hàm, nhưng không có chữ ký. * (2) Câu trả lời không trực quan về những gì để hình dung và tại sao cụm từ" đóng lại "(và "đóng cửa") đã được chọn. Có phải là do ngữ nghĩa (làm một cái gì đó gần gũi? Hoặc là một cái gì đó trở nên gần hơn?) Hoặc là từ được chọn để làm cho các cuộc thảo luận âm thanh sâu sắc hơn và bí ẩn? –

+0

Hãy thoải mái viết câu trả lời của riêng bạn. –