الفرق بين المراجعتين لصفحة: «Ruby/IO/eof»
أنشأ الصفحة ب'<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>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 | |||
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> يقرأ البيانات | |||
==البنية العامة== | ==البنية العامة== | ||
<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/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> في نهاية | |||
==مصادر== | ==مصادر== | ||
*[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