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

من موسوعة حسوب
< Ruby‏ | IO
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>IO.eof‎</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby IO...')
 
سطر 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 lang="ruby">eof  → true or false
 
eof? → true or false‎</syntaxhighlight>
 
eof? → true or false‎</syntaxhighlight>
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يُعيد التابع <code>eof</code> القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، أو <code>false</code>  خلاف ذلك.
 +
 
==أمثلة==
 
==أمثلة==
 
مثال على استخدام التابع <code>eof‎</code>:
 
مثال على استخدام التابع <code>eof‎</code>:
سطر 22: سطر 29:
 
f.eof  #=> true‎</syntaxhighlight>
 
f.eof  #=> true‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/IO/each_line|each_line]]</code>: ينفذ  الكتلة المعطاة لكل سطر في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث تُفصل الأسطر بواسطة <code>sep</code>. يجب أن يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
* التابع <code>[[Ruby/IO/eof-3F|eof?‎]]</code>: يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف
* التابع <code>[[Ruby/IO/eof-3F|eof?‎]]</code>: يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا لم تعد هناك بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
 
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-eof قسم  التابع eof‎ في الصنف IO‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-eof قسم  التابع eof‎ في الصنف IO‎ في توثيق روبي الرسمي.]

مراجعة 13:45، 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 or false

القيمة المُعادة

يُعيد التابع eof القيمة true إن كان مجرى د/خ في نهاية الملف، أو false خلاف ذلك.

أمثلة

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

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

انظر أيضا

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

مصادر