التابع 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