سؤال

كيف روبي يسمح فئة طرق الوصول خارج الطبقة ضمنا ؟

على سبيل المثال:

class Candy
    def land
        homer
    end
end

def homer
    puts "Hello"
end

Candy.new.land #Outputs Hello
هل كانت مفيدة؟

المحلول

وتعريف طريقة "هوميروس" يضيف طريقة لفئة كائن. انها ليست تحديد وظيفة خالية.

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

نصائح أخرى

طريقة بسيطة لمعرفة ما يحدث

  1. ما فئات/وحدات البحث لحل الأساليب المستخدمة في الحلوى الكائنات ؟

    p الحلوى.أسلاف #=> [حلوى, موضوع, Kernel]

  2. هل الحلوى لديك طريقة تسمى هوميروس ؟

    p الحلوى.instance_methods(كاذبة).البقرى("هوميروس") #=> []

    p الحلوى.private_instance_methods(كاذبة).البقرى("هوميروس") #=> []

  3. طيب الحلوى ليس لديه أي طريقة تسمى 'هوميروس'.

  4. ما هي الخطوة التالية في البحث سلسلة (انظر 1) => "كائن"

  5. لا وجوه لها طريقة تسمى "هوميروس" ?p الكائن.instance_methods(كاذبة).البقرى("هوميروس") #=> []

    p الكائن.private_instance_methods(كاذبة).البقرى("هوميروس") #=> ["هوميروس"]

وقد الحلوى الكائن في البحث سلسلة والتي بدورها خاص سبيل المثال طريقة "هوميروس" حتى طريقة القرار ينجح

على مواطنه البيان دائما يحدد الأسلوب في فئة ما النفس هو في نقطة تعريف

  1. ما هو النفس قبل هوميروس هو تعريفها ؟

    p النفس #=> الرئيسية مواطنه هوميروس يضع "مرحبا" نهاية

  2. فما هو نوع ؟

    p self.class #=> Object

وهذا هو السبب هوميروس ينتهي على وجوه

من الناحية الفنية, تعريف homer الأسلوب هو في الواقع على Kernel الوحدة التي هي مختلطة في Object, وليس على Object مباشرة.لذلك عندما homer لا متغير محلي أو مثيل طريقة تعريف على Candy, ، طريقة روبي الميراث سلسلة متابعتها من خلال Object ثم مختلط في Kernel وحدة ثم هذا الرمز هو تشغيل.

تحرير: آسف, أنا لا أعرف لماذا فكرت في هذا.ويبدو أن الأسلوب حقا يعيش على Object.غير متأكد يجعل الكثير من الفرق في الممارسة ولكن يجب أن أكدت الأشياء قبل النشر.

وروبي لا يوجد لديه وظائف التعويم الحر. كل أسلوب ينتمي إلى بعض وجوه. الطرق التي def على أعلى مستوى أصبحت فعلا أساليب مثيل Object الصف. لأن كل شيء هو Object على مستوى ما، كل الأشياء لها الحصول على وسائل المثال Object ل.

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