الفرق بين المراجعتين لصفحة: «Ruby/Kernel/caller»

من موسوعة حسوب
< Ruby‏ | Kernel
لا ملخص تعديل
ط مراجعة وتدقيق
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Kernel]]
[[تصنيف: Ruby Kernel]]
يعيد التابع <code>caller</code> مكدس التنفيذ الحالي (execution stack)، والذي هو مصفوفة تحتوي على سلاسل نصية على الشاكلة <code>file:line</code> أو '<code>file:line: in `method</code>.  
يعيد التابع <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>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>range</code>، والذي سيعيد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال المحدد.
اختياريًا، يمكنك تمرير مجال <code>[[Ruby/Range|range]]</code>، والذي سيعيد مصفوفة تحتوي على المدخلات الموجودة ضمن المجال المحدَّد.
==البنية العامة==
<syntaxhighlight lang="ruby">caller(start=1, length=nil)  → array or nil
caller(range) → array or nil‎</syntaxhighlight>
==المعاملات==
==المعاملات==
===<code>start‎</code>===
===<code>start‎</code>===
يحدد هذا الوسيط الاختياري عدد مدخالات المكدس الأولية
يحدد هذا الوسيط الاختياري عدد مدخالات المكدس الأولية
===<code>length‎</code>===
===<code>length‎</code>===
يحدد عدد المدخلات التي ستُعاد من المكدس.
يحدد عدد المدخلات التي ستُعاد من المكدس.
===<code>range‎</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>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>caller_locations</code> مكدس التنفيذ (execution stack) الحالي، والذي هو عبارة عن مصفوفة تحتوي كائنات تعقب (backtrace location objects).  
*التابع <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 قسم التابع caller‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]
*[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).

مصادر