الإغلاق هو واحد من أهم المفاهيم في البرمجة. يشير إلى أسلوب البرمجة الوظيفية ويسمح لك بحفظ حالة المتغيرات داخل الوظيفة حتى بعد اكتمالها. يتيح لك مفهوم الإغلاق استخدام المتغيرات المحلية داخل الوظيفة ويجعل الكود أكثر منطقية ومرونة.
يعد فهم الإغلاق في البرمجة أمرا مهما ، خاصة للمطورين الذين يعملون مع اللغات التي تدعم البرمجة الوظيفية ، مثل جافا سكريبت أو بايثون. يتيح لك الإغلاق تطوير كود أكثر كفاءة وقابلية للقراءة ، وكذلك تجنب الأخطاء المتعلقة بنطاق المتغيرات.
يمكن تقديم مثال على استخدام الإغلاق في وظيفة العداد. دعونا نتخيل أن لدينا وظيفة تخلق عدادا:
في هذا المثال ، يتم إنشاء متغير العد داخل وظيفة كريتيكونتر () ويتم إرجاع وظيفة مجهولة أن يزيد من قيمة العد في كل مرة يتم استدعاؤه. في كل مرة يتم استدعاء وظيفة كريتيكونتر () ، يتم إنشاء مثيل جديد من العداد مع عدد متغير مستقل.
- ما هو الإغلاق في البرمجة?
- تعريف الإغلاق
- كيف يعمل الإغلاق?
- أمثلة على الإغلاق في جافا سكريبت
- تطبيق الإغلاق
- سؤال وجواب
- ما هو الإغلاق في البرمجة?
- كيف يعمل الإغلاق?
- ما هي الإغلاق المستخدمة في البرمجة?
ما هو الإغلاق في البرمجة?
الإغلاق هو دالة ، إلى جانب جميع المتغيرات المتاحة من النطاق الذي تم إنشاؤه فيه. عند استخدام الإغلاق ، يمكن للوظيفة الوصول إلى المتغيرات التي كانت موجودة في وقت إنشائها ، حتى إذا تمت إزالة هذه المتغيرات من النطاق. في لغة برمجة جافا سكريبت ، غالبا ما تستخدم عمليات الإغلاق للحفاظ على حالة الوظيفة وحمايتها.
الفكرة الأساسية للإغلاق هي أن الوظيفة لديها حق الوصول إلى المتغيرات التي تم إنشاؤها داخل وظيفة أخرى. هذا ممكن لأنه في وظائف جافا سكريبت يمكن أن تتداخل داخل بعضها البعض. عند إنشاء إغلاق ، تتذكر الوظيفة قيم جميع المتغيرات التي يمكنها الوصول إليها. يمكن بعد ذلك استخدام هذه القيم في المستقبل عند استدعاء الإغلاق ، حتى إذا تم تغييرها أو حذفها.
غالبا ما تستخدم عمليات الإغلاق في جافا سكريبت لإنشاء متغيرات وطرق خاصة. مع الإغلاق ، يمكنك إنشاء وظائف يمكنها الحفاظ على حالتها الداخلية الخاصة ، والتي يتعذر الوصول إليها من الخارج. يضمن ذلك تغليف الكود وأمانه ، نظرا لأن أجزاء معينة فقط من البرنامج يمكنها الوصول إلى الحالة الداخلية للوظيفة.
| مثال على استخدام الإغلاق |
|---|
وظيفة عداد () { دعونا العد = 0; وظيفة العودة () { عد العودة count; } } دع الزيادة = العداد(); وحدة التحكم.سجل (زيادة ()) ؛ / / 0 وحدة التحكم.سجل (زيادة ()) ؛ / / 1 وحدة التحكم.سجل (زيادة ()) ؛ / / 2 |
زيادة بنسبة 1.
كشف الإغلاق
الإغلاق هو أحد المفاهيم الأساسية في البرمجة الوظيفية. إنه مزيج من دالة وبيئتها المصاحبة (السياق المعجمي) حيث تم الإعلان عن هذه الوظيفة.
عندما يتم الإعلان عن دالة ، يمكن أن تشير إلى المتغيرات المحددة داخل سياقها المعجمي ، حتى بعد إنهاء هذا السياق. هذه المتغيرات ، جنبا إلى جنب مع وظيفة ، وخلق الإغلاق. يتيح لك الإغلاق حفظ حالة المتغيرات بين استدعاءات الوظائف.
مثال:
وظيفة ماكيكونتر () {
دعونا العد = 0;
وظيفة العودة () {
عد العودة count;
}
}
دعونا عداد = ماكيكونتر();
وحدة التحكم.سجل (عداد ()) ؛ / / 0
وحدة التحكم.سجل (عداد ()) ؛ / / 1
.
تكون عمليات الإغلاق مفيدة عندما تحتاج إلى حفظ الحالة الوسيطة لوظيفة ما أو إنشاء مصنع دالة. إنها تسمح لك بإنشاء متغيرات خاصة لا يمكن الوصول إليها بواسطة رمز خارجي ، مما يساهم في إنشاء وحدات آمنة ومستقلة في البرنامج.
كيف يعمل الإغلاق?
الإغلاق هو آلية في لغات البرمجة تسمح للوظيفة بالاحتفاظ بالوصول إلى المتغيرات من سياقها المرفق ، حتى بعد تنفيذ الوظيفة. هذا يعني أن الوظيفة يمكنها تذكر قيم المتغيرات التي كانت متاحة في وقت إنشائها واستخدامها لاحقا.
عندما يتم إنشاء دالة ، فإنها تنشئ مرجعا داخليا لبيئتها المعجمية ، والتي تحتوي على جميع المتغيرات المتاحة في وقت إنشائها. تصبح هذه البيئة المعجمية جزءا من الإغلاق. عندما تشير دالة إلى متغير ، فإنها تتحقق أولا من بيئتها المعجمية الداخلية ، ثم تنتقل إلى البيئة المعجمية الأصلية إذا لم يتم العثور على المتغير.
مثال:
وظيفة الخارجي () {
فار س = 10;
وظيفة الداخلية () {
وحدة التحكم.سجل (خ);
}
العودة الداخلية;
}
إغلاق فار = الخارجي();
الإغلاق () ؛ / / النواتج 10
في هذا المثال ، يتم تداخل الوظيفة الداخلية في الوظيفة الخارجية. عندما يتم تنفيذ الدالة الخارجية ، يتم إنشاء المتغير س بالقيمة 10. ثم يتم إنشاء الوظيفة الداخلية ، والتي تشير إلى المتغير س.
عندما تقوم الدالة الخارجية بإرجاع الدالة الداخلية ، فإنها تحتفظ بالوصول إلى المتغير س. بعد استدعاء الخارجي وحفظ قيمة الإرجاع إلى متغير الإغلاق ، يمكننا استدعاء الإغلاق وسوف يخرج قيمة س ، حتى لو كانت الوظيفة الخارجية قد انتهت بالفعل من تنفيذها.
أمثلة على الإغلاق في جافا سكريبت
إغلاق في جافا سكريبت يسمح لك للحفاظ على الوصول إلى المتغيرات من نطاق خارجي داخل وظيفة. هذا مفيد بشكل خاص عند العمل مع العمليات غير المتزامنة والحلقات ومعالجات الأحداث. فيما يلي بعض الأمثلة على عمليات الإغلاق في جافا سكريبت:
- console.log(i);
- closureExamples[j](); // Выводит числа от 0 до 4
}
Пример 3: