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