الفرق بين المراجعتين ل"Ruby/Kernel/catch"

من موسوعة حسوب
< Ruby‏ | Kernel
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>catch‎</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصني...')
(لا فرق)

مراجعة 16:56، 21 أكتوبر 2018

ينفذ catch كتلته البرمجية في حال عدم استدعاء throw، فستنفّذ الكتلة بشكل طبيعي، وسيعيد catch قيمة آخر تعبير تم تقييمه.

إذا استُدعي throw(tag2, val) ، فستبحث روبي في المكدس عن كتلة catch حيث tag قيمة object_id الخاص به مساوية لقيمته لدى tag2. عند العثور عليه، يتوقف تنفيذ الكتلة وتُعاد قيمة val (أو nil إذا لم يتم تمرير وسيط ثاني إلى throw).

عند تمرير tag كوسيط أول، ستعيده catch كوسيط للكتلة.

في حال عدم إعطاء وسيط tag، ستعيد catch كائنًا جديدًا فريدًا (كما هو الحال في Object.new) كوسيط للكتلة. يمكن استخدام هذا الكائن حينها كوسيط للتابع throw، وسيتطابق مع كتلة catch الصحيحة.

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

catch([tag]) {|tag| block }   obj

المعاملات

tag‎

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

أمثلة

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

catch(1) { 123 }            # => 123

انظر أيضا

مصادر