ในภาษาการเขียนโปรแกรมการปิดเป็นคุณสมบัติที่นิยมและมักต้องการ Wikipediaพูดว่า (เหมืองที่เน้น):
ในวิทยาการคอมพิวเตอร์การปิด (... ) คือฟังก์ชั่นร่วมกับสภาพแวดล้อมอ้างอิงสำหรับตัวแปรที่ไม่ใช่ท้องถิ่นของฟังก์ชั่นนั้น การปิดช่วยให้ฟังก์ชั่นเข้าถึงตัวแปรนอกขอบเขตศัพท์ได้ทันที
ดังนั้นการปิดจึงเป็นค่าฟังก์ชัน (ไม่ระบุชื่อ) ซึ่งสามารถใช้ตัวแปรที่อยู่นอกขอบเขตของตัวเอง จากประสบการณ์ของฉันนี่หมายความว่ามันสามารถเข้าถึงตัวแปรที่อยู่ในขอบเขตที่จุดนิยามได้
ในทางปฏิบัติแนวคิดนี้ดูเหมือนจะเบี่ยงเบนไป แต่อย่างน้อยก็อยู่นอกการโปรแกรมเชิงปฏิบัติ ภาษาที่แตกต่างกันใช้ความหมายที่แตกต่างกันแม้ดูเหมือนว่าจะมีสงครามของ Verifyons โปรแกรมเมอร์หลายคนดูเหมือนจะไม่รู้ว่าการปิดคืออะไรดูพวกเขาน้อยกว่าฟังก์ชั่นที่ไม่ระบุชื่อ
นอกจากนี้ดูเหมือนว่าจะมีอุปสรรคสำคัญเมื่อดำเนินการปิด สิ่งที่น่าสังเกตมากที่สุดคือ Java 7 น่าจะรวมเอาไว้ แต่ฟีเจอร์ดังกล่าวจะถูกส่งกลับไปยังรีลีสในอนาคต
เหตุใดการปิดจึงยากที่จะเข้าใจ คำถามนี้กว้างเกินไปและคลุมเครือดังนั้นขอให้ฉันมุ่งเน้นไปที่คำถามที่เชื่อมต่อกันเหล่านี้มากขึ้น:
- มีปัญหาเกี่ยวกับการแสดงการปิดในพิธีการทางความหมายทั่วไป (ขั้นตอนเล็ก ๆ ขั้นตอนที่ใหญ่ ... )?
- ระบบชนิดที่มีอยู่ไม่เหมาะสำหรับการปิดและไม่สามารถขยายได้อย่างง่ายดายหรือไม่?
- เป็นปัญหาหรือไม่ที่จะนำการปิดให้สอดคล้องกับการแปลขั้นตอนแบบดั้งเดิม
โปรดทราบว่าคำถามส่วนใหญ่เกี่ยวข้องกับภาษาเชิงโพรซีเดอร์เชิงวัตถุและสคริปต์ เท่าที่ฉันรู้ภาษาการทำงานไม่มีปัญหาใด ๆ