ماذا تعني الكلمة المفتاحية `open` في Swift وكيف تختلف عن `public`؟
مرحبًا بالجميع! بدأت تعلم Swift مؤخرًا، وحدث لديّ ارتباك بخصوص معدّلات الوصول. في التوثيق قرأت عن `public` و `internal` و `fileprivate` و `private`، لكن بعد ذلك صادفت `open`. \n\nأفهم أن `public` يجعل الكلاس أو الميثود متاحًا من موديول آخر. لكن لماذا نحتاج `open`؟ أليس `public` يفعل نفس الشيء؟ \n\nهذا مثال: أنشأت إطار عمل خاص بي وأريد أن يتمكن المستخدمون ليس فقط من استخدام كلاسي، بل أيضًا من الوراثة منه. إذا استخدمت `public`، سيكون الكلاس مرئيًا، لكن المترجم لن يسمح بالوراثة منه. إذا استخدمت `open` — يُسمح بالوراثة. لماذا؟ \n\nكما أنني مرتبك لأن `open` يمكن تطبيقه فقط على الكلاسات وأعضاء الكلاس. أما بالنسبة للـ structs والبروتوكولات، كما فهمت، لا يُستخدم `open`. هل هذا صحيح؟ \n\nوسؤال آخر: إذا كنت أكتب تطبيقًا عاديًا (ليس إطار عمل)، هل أحتاج لاستخدام `open` على الإطلاق؟ أم يكفي `public`؟ \n\nسأكون ممتنًا للتوضيح مع أمثلة، لأن الشرح الرسمي