سؤال

أنا أقوم ببناء مترجم/مترجم لمشروع مدرسي (حسنًا الآن يتحول إلى مشروع هواية) وحذرني مدرب من السماح بطفرة "هذا" الملزم (قال إنه كان إجمالياً وتوصل إلى صفقة كبيرة حوله ) لكنني لم أتعلم أبدًا لماذا هذا ... خطير أو سيئ. أشعر بالفضول الشديد حول سبب كون هذا أمرًا سيئًا للغاية. لقد تصورت أن هذا النوع من الميزة يمكن أن يكون مفيدًا بطريقة أو بأخرى.

أتساءل عما إذا كان أي شخص على دراية ببناء اللغات يمكن أن يخبرني عن نوع المشكلات التي يمكن أن تسببها الطفرة على "هذا" ، وإذا كان يعرف أي حيل باردة أو مفيدة يمكن للمرء أن يفعلها إذا تم السماح بها بالفعل.

هل أي لغات تدركها تسمح بطفرة "هذا"؟

شكرًا،

هل كانت مفيدة؟

المحلول

أستطيع أن أفكر في عدة أسباب لماذا ستكون فكرة سيئة.

1) "هذا" هو مؤشر إلى مثيل الكائن الذي يتم استدعاء الطريقة التي يتم استدعاؤها. قد يؤدي السماح بإجراء تغييرات عليها إلى صحة الوصول إلى الذاكرة في أسوأ الحالات.

2) يتوقع المتصل أن تعمل الطريقة على المثيل الذي تم استدعاؤه عليه. إن تغيير "هذا" إلى شيء آخر سيؤدي إلى نتائج غير متوقعة.

3) لا أستطيع التفكير في أي شيء يسمح به طفرة "هذا" أنه لا يمكن تحقيق ذلك بطريقة أكثر قياسية ومألوفة.

نصائح أخرى

لقد فوجئت بمدربك الذي حصل عليه. إنه مجرد تغيير في تعريف اللغة. لا أعتقد أن أتمكن من تغيير معنى this هو مفيد أو جيد تصميم اللغة ، لكنني أعتقد أنه طالما أنك تلتزم بالدلالات المرجعية ، إنها تجربة صالحة.

السبب الرئيسي لعدم السماح this الإشارة إلى أي شيء آخر غير مستقبل الطريقة الحالية هو ذلك سوف تربك توقعات أي شخص قرأ أو كتب برنامجًا موجهًا نحو الكائن. هذا ليس تصميمًا جيدًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top