التابع IO.eof‎ في روبي

من موسوعة حسوب

يُعيد التابع eof القيمة true إن كان مجرى د/خ في نهاية الملف، ما يعني أنه لا توجد بيانات أخرى للقراءة.

يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError.

إن كان مجرى د/خ أنبوبًا (pipe) أو مقبسًا (socket)، فسيقوم التابع IO#eof?‎ بالتعطيل إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.

r, w = IO.pipe
Thread.new { sleep 1; w.close }
r.eof?  #=> true after 1 second blocking

r, w = IO.pipe
Thread.new { sleep 1; w.puts "a" }
r.eof?  #=> false after 1 second blocking

r, w = IO.pipe
r.eof?  # blocks forever

لاحظ أن التابع IO#eof?‎ يقرأ البيانات من مخزن الإدخال المؤقت (input byte buffer). قد لا يتصرف التابع sysread كما كنت تنوي مع IO#eof?‎، إلا إن استدعيت rewind أولاً (لكنه غير متوفر في بعض المجاري).

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

eof   true or false
eof?  true or false

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

يُعيد التابع eof القيمة true إن كان مجرى د/خ في نهاية الملف، أو false خلاف ذلك.

أمثلة

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

f = File.new("testfile")
dummy = f.readlines
f.eof   #=> true‎

انظر أيضا

  • التابع eof?‎: يُعيد القيمة true إن كان مجرى د/خ ios في نهاية الملف

مصادر