التابع 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 إن كان مجرى د/خ عند نهاية الملف، أو false خلاف ذلك.

أمثلة

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

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

انظر أيضا

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

مصادر