الفرق بين المراجعتين ل"Ruby/IO/eof-3F"

من موسوعة حسوب
< Ruby‏ | IO
اذهب إلى التنقل اذهب إلى البحث
ط (تدقيق)
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby IO]]
 
[[تصنيف: Ruby IO]]
يُعيد التابع <code>eof?‎</code> القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] عند نهاية الملف، ما يعني أنه لم تعد هناك بيانات أخرى للقراءة.
+
يتحقق التابع <code>eof?‎</code> إن وصل [[Ruby/IO|المجرى]] الذي استدعي معه إلى نهاية الملف؛ مما يعني أنَّه لا توجد بيانات أخرى للقراءة. 
  
يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء <code>[[Ruby/IOError|IOError]]</code>.
  
إن كان [[Ruby/IO|مجرى د/خ]] أنبوبًا (pipe) أو مقبسًا (socket)، فسيقوم التابع <code>IO#eof?‎</code> بالتعطيل إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.<syntaxhighlight lang="ruby">r, w = IO.pipe
+
إن كان [[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 after 1 second blocking
+
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 after 1 second blocking
+
r.eof?  #=> بعد حجز التابع لمدة 1 ثانية false تعاد القيمة
  
 
r, w = IO.pipe
 
r, w = IO.pipe
r.eof?  # blocks forever</syntaxhighlight>لاحظ أن التابع <code>IO#eof?‎</code> يقرأ البيانات من مخزن الإدخال المؤقت  (input byte buffer). قد لا يتصرف التابع <code>[[Ruby/IO/sysread|sysread]]</code> كما كنت تنوي مع <code>IO#eof?‎</code>، إلا إن استدعيت <code>[[Ruby/IO/rewind|rewind]]</code> أولاً  (لكنه غير متوفر في بعض المجاري).
+
r.eof?  # يُحجَز التابع للأبد</syntaxhighlight>
==البنية العامة==
+
 
<syntaxhighlight lang="ruby">eof? → true or false‎</syntaxhighlight>
+
== <span> </span>انظر أيضًا ==
==القيمة المُعادة==
+
*التابع [[Ruby/IO/binmode-3F|<code>binmode?‎</code>]]: يتحقق إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode).
يُعيد التابع <code>eof?‎</code> القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] عند نهاية الملف، أو  <code>false</code> خلاف ذلك.
+
 
 +
*التابع [[Ruby/IO/closed-3F|<code>closed?‎</code>]]: يتحقق إن كان مجرى د/خ مغلقًا تمامًا.
  
==أمثلة==
+
*التابع <code>[[Ruby/IO/eof|eof]]</code>: يتحقق إن وصل [[Ruby/IO|المجرى]] الذي استدعي معه إلى نهاية الملف.
مثال على استخدام التابع <code>eof?‎</code>:<syntaxhighlight lang="ruby">f = File.new("testfile")
 
dummy = f.readlines
 
f.eof  #=> true‎</syntaxhighlight>
 
==انظر أيضا==
 
*التابع <code>[[Ruby/IO/eof|eof]]</code>: يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] عند نهاية الملف
 
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-eof-3F قسم التابع eof?‎ في الصنف IO‎ في توثيق روبي الرسمي.]
+
*[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?‎: يتحقق إن كان مجرى د/خ مغلقًا تمامًا.
  • التابع eof: يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.

مصادر