التابع caller الخاص بالصنف Kernel في روبي
يعيد التابع caller مكدس التنفيذ الحالي (execution stack)، والذي هو مصفوفة تحتوي على سلاسل نصية بالشكل file:line أو `file:line: in `method.
البنية العامة
caller(start=1, length=nil) → array or nil
caller(range) → array or nil
يحدد الوسيط الاختياري start عدد مدخالات المكدس الأولية (initial stack entries) التي ستٌحذف من الجزء العلوي من المكدس.
يمكن استخدام وسيط اختياري ثاني length لتحديد عدد المدخلات التي ستُعاد من المكدس.
يعيد التابع caller القيمة nil إن كان الوسيط start أكبر من حجم مكدس التنفيذ الحالي.
اختياريًا، يمكنك تمرير مجال range، والذي سيعيد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال المحدَّد.
المعاملات
start
يحدد هذا الوسيط الاختياري عدد مدخالات المكدس الأولية
length
يحدد عدد المدخلات التي ستُعاد من المكدس.
range
في حال تمريره، ستعاد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال range المعطى.
القيمة المعادة
تعاد مصفوفة تحتوي على سلاسل نصية على الشاكلة 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: يعيد مكدس التنفيذ (execution stack) الحالي كمصفوفة تحتوي كائنات تعقب (backtrace location objects).