لماذا تمنع Pascal نفس اسم المعرف لمعلمة Method وعضو بيانات الفئة؟

StackOverflow https://stackoverflow.com/questions/2072883

  •  20-09-2019
  •  | 
  •  

سؤال

type
    TPerson = class(TObject)
        name : string;
        constructor create(name : string);
    end;

سيؤدي إلى خطأ في برنامج التحويل البرمجي.

أعتقد أ self أو this المؤشر/المرجع جيد بما فيه الكفاية ، لوضوحه. إذن ، ما هي مزايا القيام بذلك؟

تعديل: سؤال آخر ، هل يمكنك إظهار ما هي اللغات الأخرى التي تنشر هذه السياسة؟

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

المحلول

لمنع الاشتباكات الاسم حيث سيظل اسم المعلمة ظل عضو الفصل. لا يمكن أن يحدث بهذه الطريقة وكل اسم لا لبس فيه.

تذكر أن باسكال هو أ لغة العبودية والانضباط; ؛ تم تصميم تلك لمحاولة منع الأخطاء الشائعة.

خيار آخر لمنع المشكلة المتصورة هو ما يفعله Python: تفويض مؤهل أعضاء المثال this أو self حتى يتسنى لك لديك ببادئة كل حالة وصول عضو مع self.

لا أعرف أي لغة أخرى بهذا التقييد. لكن بعض ميزات اللغة فريدة من نوعها بالفعل ؛ الاستثناءات التي تم فحصها على سبيل المثال هي أيضًا.

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