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

كيف أحصل على اسم التابع الذي قام باستدعاء تابع آخر في روبي؟

TheProgrammer

السؤال

هل هنالك طريقة في الروبي أستطيع به الحصول على اسم التابع الذي قام باستدعاء تابع آخر؟ مثال:

class Test
  def self.foo
    Fooz.bar
  end
end

class Fooz
  def self.bar
    # سوف أحصل على Test.foo أو foo
  end
end

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

هنالك عدة طرق للحصول على اسم التابع الذي قام باستدعاء تابع آخر من داخله، فمثلا يُمكننا استعمال caller كما في المثال التالي:

puts caller[0]

ولتحسين الناتج يمكنك استخدام هذا السطر لحذف ما هو ليس ضروري في الناتج وإظهار اسم التابع التي قام بالاستدعاء فقط:

puts caller[0][/`.*'/][1..-2]

وإذا كنت تستخدم الإصدار الثاني من الروبي، فيمكنك في هذه الحالة اختصار السطر السابق كما يلي:

caller_locations(1,1)[0].label

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

caller[0][/`([^']*)'/, 1]

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...