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

من موسوعة حسوب
< Ruby‏ | IO
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>IO.eof?‎‎</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby IO]]
 
[[تصنيف: Ruby IO]]
يُعيد التابع <code>eof?‎</code> القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا لم تعد هناك بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يُعيد التابع <code>eof?‎</code> القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] عند نهاية الملف، ما يعني أنه لم تعد هناك بيانات أخرى للقراءة.
  
 +
يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
  
 +
إن كان [[Ruby/IO|مجرى د/خ]] أنبوبًا (pipe) أو مقبسًا (socket)، فسيقوم التابع <code>IO#eof?‎</code> بالتعطيل إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.<syntaxhighlight lang="ruby">r, w = IO.pipe
 +
Thread.new { sleep 1; w.close }
 +
r.eof?  #=> true after 1 second blocking
  
إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> عبارة عن مجرى كأنبوب (pipe) أو منفذ (socket)، فسيتعطل <code>IO#eof?</code> إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.
+
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</syntaxhighlight>لاحظ أن التابع <code>IO#eof?</code> يقرأ البيانات من مخزن الإدخال المؤقت (input byte buffer). قد لا يتصرف التابع <code>[[Ruby/IO/sysread|sysread]]</code> كما كنت تنوي مع <code>IO#eof?</code>، إلا إن استدعيت <code>[[Ruby/IO/rewind|rewind]]</code> أولاً (لكنه غير متوفر في بعض المجاري).
لاحظ أن التابع <code>IO#eof?</code> يقرأ البيانات إلى المخزن المؤقت للإدخال (input byte buffer). قد لا يتصرف التابع <code>IO#sysread</code> كما كنت تنوي مع <code>IO#eof?</code>، إلا إن استدعيت <code>IO#rewind</code> أولاً (لكنه غير متوفر في بعض المجاري).
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">eof? → true or false‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">eof? → true or false‎</syntaxhighlight>
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يُعيد التابع <code>eof?‎</code> القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] عند نهاية الملف، أو  <code>false</code> خلاف ذلك.
 +
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>eof?‎</code>:
+
مثال على استخدام التابع <code>eof?‎</code>:<syntaxhighlight lang="ruby">f = File.new("testfile")
<syntaxhighlight lang="ruby">f = File.new("testfile")
 
 
dummy = f.readlines
 
dummy = f.readlines
 
f.eof  #=> true‎</syntaxhighlight>
 
f.eof  #=> true‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/IO/eof|eof]]</code>: يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا توجد بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
*التابع <code>[[Ruby/IO/eof|eof]]</code>: يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] عند نهاية الملف
* التابع <code>[[Ruby/IO/external_encoding|external_encoding]]</code>: يُعيد  [[Ruby/Encoding|الترميز]] <code>[[Ruby/Encoding|Encoding]]</code> الذي يمثل ترميز الملف. إن كان [[Ruby/IO|مجرى د/خ]] <code>io</code> في وضع الكتابة ولم يُحدّد أي ترميز، فستعاد <code>nil</code>.
 
 
==مصادر==
 
==مصادر==
 
*[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‎ في توثيق روبي الرسمي.]

مراجعة 13:49، 13 نوفمبر 2018

يُعيد التابع 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 إن كان مجرى د/خ عند نهاية الملف

مصادر