التابع Object.each_object في روبي

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

يستدعي التابع each_object كتلةً محدَّدةً مرةً لكل كائنٍ نشطٍ (living object) أو غير مباشرٍ (nonimmediate object) في هذه العملية الحالية في روبي. إذا حُدِّدت الوحدة (module) المراد تنفيذ الكتلة عليها، فسيستدعي التابع الكتلة للأصناف أو الوحدات المماثلة لهذه الوحدة (أو لتلك التي تكون صنفًا فرعيًا منها). يُعيد التابع each_object عدد الكائنات التي عُثر عليها. لا تُعاد الكائنات المباشرة (مثل Fixnums، و Symbols، و true، و false، و nil) أبدًا.

إذا لم تُعطَ أي كتلة إلى التابع each_object، فستُعاد نسخةٌ من الصنف Enumerator.

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

each_object([module]) {|obj| ... }  integer11
each_object([module])  an_enumerator

المعاملات

module

الوحدة المراد استدعاء الكتلة للأصناف أو الوحدات المماثلة لها فقط (أو لتلك التي تكون صنفًا فرعيًا منها).

obj

الكائن التي ستُنفَّذ عليه الكتلة.

الكتلة المراد تنفيذها على الكائن obj.

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

يُعاد عددٌ صحيحٌ (integer) يمثِّل عدد الكائنات التي عُثر عليها في حال عُيِّن المعامل module؛ خلاف ذلك، تُعاد نسخةٌ من الصنف Enumerator.

أمثلة

مثالٌ عن استخدام التابع each_object. يُعيد التابع في هذا المثال كُلًّا من الأعداد التي عرفناها والثوابت المتعدَّدة المُعرفة في الوحدة Math:

a = 102.7
b = 95       # Won't be returned
c = 12345678987654321
count = ObjectSpace.each_object(Numeric) {|x| p x }
puts "Total count: #{count}"

ينتج عن تنفيذ المثال السابق:

12345678987654321
102.7
2.71828182845905
3.14159265358979
2.22044604925031e-16
1.7976931348623157e+308
2.2250738585072e-308
Total count: 7

انظر أيضًا

  • التابع id2ref_: يُحوِل معرِّف الكائن إلى مرجعٍ للكائن.
  • التابع count_objects: يُحصِي جميع الكائنات التي من نوعٍ واحد.
  • التابع define_finalizer: يضيف كتلة aProc كمُنهِي ليُستدعى بعد تدمير الكائن.