الفرق بين المراجعتين ل"Ruby/IO/eof-3F"
اذهب إلى التنقل
اذهب إلى البحث
(أنشأ الصفحة ب'<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>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> | <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>: يُعيد القيمة | + | *التابع <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 في توثيق روبي الرسمي.] |
مراجعة 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