التابع catch
الخاص بالصنف Kernel
في روبي
ينفذ 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
انظر أيضا
- التابع
X_name_X
: