الفرق بين المراجعتين لصفحة: «Ruby/IO/eof-3F»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط تدقيق |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby IO]] | [[تصنيف: Ruby IO]] | ||
يتحقق التابع <code>eof?</code> إن وصل [[Ruby/IO|المجرى]] الذي استدعي معه إلى نهاية الملف؛ مما يعني أنَّه لا توجد بيانات أخرى للقراءة. | |||
يجب أن يكون المجرى مفتوحًا في وضعية القراءة | يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء <code>[[Ruby/IOError|IOError]]</code>. | ||
إن كان [[Ruby/IO| | إن كان [[Ruby/IO|المجرى]] أنبوبًا (pipe) أو مقبسًا (socket)، فسيُحجَز التابع <code>eof?</code> إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه. | ||
لاحظ أن التابع <code>eof?</code> يقرأ البيانات من مخزن الإدخال المؤقت (input byte buffer). قد لا يتصرف التابع <code>[[Ruby/IO/sysread|sysread]]</code> كما كنت تنوي مع <code>eof?</code> إلا إذا استدعيت <code>[[Ruby/IO/rewind|rewind]]</code> أولًا (لكن هذا غير متوفر في بعض المجاري). | |||
==البنية العامة== | |||
<syntaxhighlight lang="ruby">eof? → true or false</syntaxhighlight> | |||
==القيمة المعادة== | |||
تعاد القيمة <code>true</code> إن كان [[Ruby/IO|المجرى]] المعطى وصل إلى نهاية الملف، أو تعاد القيمة <code>false</code> خلاف ذلك. | |||
==أمثلة== | |||
مثال على استخدام التابع <code>eof?</code>:<syntaxhighlight lang="ruby">f = File.new("testfile") | |||
dummy = f.readlines | |||
f.eof #=> true</syntaxhighlight>مثال آخر على استعمال التابع <code>eof</code> عندما يكون المجرى أنبوبًا:<syntaxhighlight lang="ruby">r, w = IO.pipe | |||
Thread.new { sleep 1; w.close } | Thread.new { sleep 1; w.close } | ||
r.eof? #=> true | r.eof? #=> بعد حجز التابع لمدة 1 ثانية true تعاد القيمة | ||
r, w = IO.pipe | r, w = IO.pipe | ||
Thread.new { sleep 1; w.puts "a" } | Thread.new { sleep 1; w.puts "a" } | ||
r.eof? #=> false | r.eof? #=> بعد حجز التابع لمدة 1 ثانية false تعاد القيمة | ||
r, w = IO.pipe | r, w = IO.pipe | ||
r.eof? # | r.eof? # يُحجَز التابع للأبد</syntaxhighlight> | ||
== <span> </span>انظر أيضًا == | |||
*التابع [[Ruby/IO/binmode-3F|<code>binmode?</code>]]: يتحقق إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | |||
*التابع [[Ruby/IO/closed-3F|<code>closed?</code>]]: يتحقق إن كان مجرى د/خ مغلقًا تمامًا. | |||
*التابع <code>[[Ruby/IO/eof|eof]]</code>: يتحقق إن وصل [[Ruby/IO|المجرى]] الذي استدعي معه إلى نهاية الملف. | |||
*التابع <code>[[Ruby/IO/eof|eof]]</code>: | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-eof-3F قسم | *[http://ruby-doc.org/core-2.5.1/IO.html#method-i-eof-3F قسم التابع eof? في الصنف IO في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 10:51، 22 ديسمبر 2018
يتحقق التابع eof?
إن وصل المجرى الذي استدعي معه إلى نهاية الملف؛ مما يعني أنَّه لا توجد بيانات أخرى للقراءة.
يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء IOError
.
إن كان المجرى أنبوبًا (pipe) أو مقبسًا (socket)، فسيُحجَز التابع eof?
إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.
لاحظ أن التابع eof?
يقرأ البيانات من مخزن الإدخال المؤقت (input byte buffer). قد لا يتصرف التابع sysread
كما كنت تنوي مع eof?
إلا إذا استدعيت rewind
أولًا (لكن هذا غير متوفر في بعض المجاري).
البنية العامة
eof? → true or false
القيمة المعادة
تعاد القيمة true
إن كان المجرى المعطى وصل إلى نهاية الملف، أو تعاد القيمة false
خلاف ذلك.
أمثلة
مثال على استخدام التابع eof?
:
f = File.new("testfile")
dummy = f.readlines
f.eof #=> true
مثال آخر على استعمال التابع eof
عندما يكون المجرى أنبوبًا:
r, w = IO.pipe
Thread.new { sleep 1; w.close }
r.eof? #=> بعد حجز التابع لمدة 1 ثانية true تعاد القيمة
r, w = IO.pipe
Thread.new { sleep 1; w.puts "a" }
r.eof? #=> بعد حجز التابع لمدة 1 ثانية false تعاد القيمة
r, w = IO.pipe
r.eof? # يُحجَز التابع للأبد
انظر أيضًا
- التابع
closed?
: يتحقق إن كان مجرى د/خ مغلقًا تمامًا.