اذهب إلى المحتوى

السؤال

نشر

هل هنالك طريقة في الروبي لاستدعاء تابع صنف من مثيل ؟ ففي المثال التالي:

class Truck
  def self.default_make
    # Class method.
    "mac"
  end

  def initialize
    # Instance method.
    Truck.default_make  # gets the default via the class's method.
    # But: I wish to avoid mentioning Truck. Seems I'm repeating myself.
  end
end

قمت بإعادة كتابة Truck لاستدعاء تابع  default_make، فهل هنالك طريقة أخرى دون أن أذكر اسم الصنف Truck ؟

Recommended Posts

  • 0
نشر

الطريقة التي قمت بها صحيحة وليس بها أي مشكل في التعامل معها، لكن بما أنك أردت طريقة أخرى فيمكنك في هذه الحالة استخدام self.
فسيقوم self بالعودة إلى اسم الصنف أي self هي Truck في مثالك أي أننا بدل أن نكتب اسم الصنف Truck قمنا بكتابة self بشكل عام، ولتفهم أكثر ألق نظرة على هذا المثال:

class Foo
    def self.some_class_method
        puts self
    end

    def some_instance_method
        self.class.some_class_method
    end
end

print "Class method: "
Foo.some_class_method

print "Instance method: "
Foo.new.some_instance_method

حسنا والآن عند تشغيل هذا البرنامج سيظهر لنا التالي:

Class method: Foo
Instance method: Foo

حيث قمنا في المرة الأولى باستدعاء اسم التابع من الصنف وفي المرة الثانية قمنا باستدعاء اسم التابع من المثيل.
المصدر

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...