التابع caller‎ الخاص بالصنف Kernel في روبي

من موسوعة حسوب

يعيد التابع caller مكدس التنفيذ الحالي (execution stack)، والذي هو مصفوفة تحتوي على سلاسل نصية على الشاكلة file:line أو 'file:line: in `method.

يحدد الوسيط الاختياري start (انظر فقرة البنية العامة) عدد مدخالات المكدس الأولية (initial stack entries) التي ستٌحذف من الجزء العلوي من المكدس.

يمكن استخدام وسيط اختياري ثاني length لتحدد عدد المدخلات التي ستُعاد من المكدس.

يعيد التابع caller القيمة nil إن كان الوسيط start أكبر من حجم مكدس التنفيذ الحالي.

اختياريا، يمكنك تمرير مجال range، والذي سيعيد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال المحدد.

البنية العامة

caller(start=1, length=nil)   array or nil
caller(range)  array or nil

المعاملات

start‎

يحدد هذا الوسيط الاختياري عدد مدخالات المكدس الأولية

length‎

يحدد عدد المدخلات التي ستُعاد من المكدس.

range‎

في حال تمريره ستعاد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال range‎.

القيمة المُعادة

يعيد التابع caller مصفوفة تحتوي على سلاسل نصية على الشاكلة file:line أو 'file:line: in `method. أو يعيد القيمة nil إن كان الوسيط start أكبر من حجم مكدس التنفيذ الحالي.

أمثلة

مثال على استخدام التابع caller‎:

def a(skip)
  caller(skip)
end
def b(skip)
  a(skip)
end
def c(skip)
  b(skip)
end
c(0)   #=> ["prog:2:in `a'", "prog:5:in `b'", "prog:8:in `c'", "prog:10:in `<main>'"]
c(1)   #=> ["prog:5:in `b'", "prog:8:in `c'", "prog:11:in `<main>'"]
c(2)   #=> ["prog:8:in `c'", "prog:12:in `<main>'"]
c(3)   #=> ["prog:13:in `<main>'"]
c(4)   #=> []
c(5)   #=> nil

انظر أيضا

  • التابع caller_locations: يعيد التابع caller_locations مكدس التنفيذ (execution stack) الحالي، والذي هو عبارة عن مصفوفة تحتوي كائنات تعقب (backtrace location objects).

مصادر