التابع ARGF.each_line في روبي

من موسوعة حسوب
< Ruby‏ | ARGF

يعيد التابع each_line قيمة قابلة للعد (enumerator) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في ARGV. في حال تمرير كتلة برمجية للتابع each_line، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator).

يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة السطر الأخير من الملف الأول، سيُعاد السطر الأول من الملف الثاني. يمكن استخدام التابعيْن ARGF.filename و ARGF.lineno لمعرفة اسم الملف ورقم السطر، على التوالي، للسطر الحالي.

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

each_line(sep=$/) {|line| block }  ARGF
each_line(sep=$/, limit) {|line| block }  ARGF
each_line(...)  an_enumerator

المعاملات

sep

محرف السطر الجديد المستعمل في فصل الأسطر عن بعضها بعضًا. قيمته الافتراضية هي محرف السطر الجديد المستعمل في المنصة المستخدمة آنذاك.

limit

عدد صحيح يحدد الحد الأقصى لطول كل سطر، وستُقسَم السطور الطويلة التي تزيد عن هذا الحد وفقًا للقيمة limit المعطاة.

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

تعاد قيمة قابلة للعد (enumerator) أو يعاد المجرى ARGF.

أمثلة

تطبع الشيفرة التالية كل سطر من كل ملف مسبوق برقمه، مع عرض اسم الملف مرة واحدة لكل ملف:

ARGF.each_line do |line|
 puts ARGF.filename if ARGF.lineno == 1
 puts "#{ARGF.lineno}: #{line}"
end

انظر أيضًا

  • التابع filename: يعيد اسم الملف الحالي.
  • التابع lineno: يجلب رقم السطر الحالي للمجرى ARGF ككُل.

مصادر