الفرق بين المراجعتين لصفحة: «Ruby/Kernel/caller»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>caller</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصني...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Kernel]] | [[تصنيف: Ruby Kernel]] | ||
يعيد التابع مكدس التنفيذ الحالي (execution stack)، والذي هو مصفوفة تحتوي على سلاسل نصية على الشاكلة <code>file:line</code> أو <code>file:line: in `method | يعيد التابع <code>caller</code> مكدس التنفيذ الحالي (execution stack)، والذي هو مصفوفة تحتوي على سلاسل نصية على الشاكلة <code>file:line</code> أو '<code>file:line: in `method</code>. | ||
يحدد الوسيط الاختياري start | |||
يحدد الوسيط الاختياري <code>start</code> (انظر فقرة البنية العامة) عدد مدخالات المكدس الأولية (initial stack entries) التي ستٌحذف من الجزء العلوي من المكدس. | |||
يمكن استخدام وسيط اختياري ثاني <code>length</code> لتحدد عدد المدخلات التي ستُعاد من المكدس. | يمكن استخدام وسيط اختياري ثاني <code>length</code> لتحدد عدد المدخلات التي ستُعاد من المكدس. | ||
يعيد التابع القيمة <code>nil</code> إن كان الوسيط start أكبر من حجم مكدس التنفيذ الحالي. | |||
اختياريا، يمكنك تمرير مجال | يعيد التابع <code>caller</code> القيمة <code>nil</code> إن كان الوسيط <code>start</code> أكبر من حجم مكدس التنفيذ الحالي. | ||
اختياريا، يمكنك تمرير مجال <code>range</code>، والذي سيعيد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال المحدد. | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">caller(start=1, length=nil) → array or nil | <syntaxhighlight lang="ruby">caller(start=1, length=nil) → array or nil | ||
سطر 13: | سطر 17: | ||
==المعاملات== | ==المعاملات== | ||
===<code>start</code>=== | ===<code>start</code>=== | ||
يحدد هذا الوسيط الاختياري عدد مدخالات المكدس الأولية | |||
===<code>length</code>=== | ===<code>length</code>=== | ||
يحدد عدد المدخلات التي ستُعاد من المكدس. | |||
===<code>range</code>=== | ===<code>range</code>=== | ||
في حال تمريره ستعاد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال <code>range</code>. | |||
==القيمة المُعادة== | ==القيمة المُعادة== | ||
يعيد التابع <code>caller</code> مصفوفة تحتوي على سلاسل نصية على الشاكلة <code>file:line</code> أو '<code>file:line: in `method</code>. أو يعيد القيمة <code>nil</code> إن كان الوسيط <code>start</code> أكبر من حجم مكدس التنفيذ الحالي. | |||
==أمثلة== | ==أمثلة== | ||
سطر 40: | سطر 47: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Integer/ | * التابع <code>[[Ruby/Integer/caller locations|caller_locations]]</code>: يعيد التابع <code>caller_locations</code> مكدس التنفيذ (execution stack) الحالي، والذي هو عبارة عن مصفوفة تحتوي كائنات تعقب (backtrace location objects). | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-caller قسم التابع caller في الصنف Kernel في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-caller قسم التابع caller في الصنف Kernel في توثيق روبي الرسمي.] |
مراجعة 11:28، 21 أكتوبر 2018
يعيد التابع 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).