ما هي اللغات التي تدعم التباين في أنواع إرجاع الأساليب الموروثة؟

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

سؤال

سألت في الأصل هذا السؤال, ، ولكن عند العثور على إجابة، اكتشفت أن مشكلتي الأصلية كانت نقص الدعم في C# للتباين في أنواع إرجاع الأساليب الموروثة.وبعد اكتشاف ذلك، أصبح لدي فضول لمعرفة اللغات التي أستخدمها يفعل دعم هذه الميزة.

سأقبل إجابة من يستطيع ذكر أكثر.

يحرر:أشار جون ميليكين بشكل صحيح إلى أن الكثير من اللغات الديناميكية تدعم هذا الأمر.للتوضيح:

أنا أبحث فقط عن اللغات الثابتة/المكتوبة بقوة.

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

المحلول

  • سي ++
  • جافا
  • حقيقيأساسي
  • ايفل
  • ساثر
  • مودولا-3

نصائح أخرى

أي لغات ديناميكية، بالطبع - Python، Ruby، Smalltalk، Javascript، إلخ.

ما أسأله بشكل أساسي هو ما هي اللغات التي تدعم ما أحاول القيام به هنا.

هل يتيح لك C# تحديد أنواع بيانات مختلفة لملف get() و set() طُرق؟إذا لم يكن الأمر كذلك، أود أن تقسيمها إلى الفعلية Leg get_leg() و set_leg(DogLeg) المهام.وإلا سيحدث أحد أمرين:1) الإفراط في المواصفات get_leg() 2) نقص المواصفات set_leg().

أضافت Java دعمًا لهذا في 1.5.لن يتم تجميعه في الإصدارات السابقة.

وكما أشار إيفان هاميلتون ومات نوغوتشي، فإن لغة C++ تدعم هذه الميزة.لكن لاحظ أن أنواع الإرجاع المتغيرة معطلة بالنسبة لفئات القوالب التي ترث من بعض القواعد في MSVC 7.X حتى 9.X (وربما 6 أيضًا).تحصل على الخطأ C2555.

يدعم C++ أنواع الإرجاع المتغيرة.

ولكن أعتقد أن هذا ما أطلبه.. أم أنه كذلك؟

أنا بصراحة لا أعرف ما الذي تطلبه.من الواضح أن Java تتمتع بنفس الدعم للتباين المشترك من نوع الإرجاع مثل C#، لذلك إذا كان ما تبحث عنه ينقصه C#، فهو ينقصه Java أيضًا.

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