الفرق بين المراجعتين لصفحة: «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> إن وصل [[Ruby/IO|المجرى]] الذي استدعي معه إلى نهاية الملف؛ مما يعني أنَّه لا توجد بيانات أخرى للقراءة.  


يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء <code>[[Ruby/IOError|IOError]]</code>.


إن كان [[Ruby/IO|المجرى]] أنبوبًا (pipe) أو مقبسًا (socket)، فسيُحجَز التابع <code>eof?‎</code> إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.


إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> عبارة عن مجرى كأنبوب (pipe) أو منفذ (socket)، فسيتعطل <code>IO#eof?</code> إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.
لاحظ أن التابع <code>eof?</code> يقرأ البيانات من مخزن الإدخال المؤقت (input byte buffer). قد لا يتصرف التابع <code>[[Ruby/IO/sysread|sysread]]</code> كما كنت تنوي مع <code>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>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>eof‎</code> عندما يكون المجرى أنبوبًا:<syntaxhighlight lang="ruby">r, w = IO.pipe
==انظر أيضا==
Thread.new { sleep 1; w.close }
* التابع <code>[[Ruby/IO/each_line|each_line]]</code>: ينفذ  الكتلة المعطاة لكل سطر في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث تُفصل الأسطر بواسطة <code>sep</code>. يجب أن يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
r.eof?  #=> بعد حجز التابع لمدة 1 ثانية true تعاد القيمة
* التابع <code>[[Ruby/IO/eof-3F|eof?‎]]</code>: يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا لم تعد هناك بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
 
r, w = IO.pipe
Thread.new { sleep 1; w.puts "a" }
r.eof?  #=> بعد حجز التابع لمدة 1 ثانية false تعاد القيمة
 
r, w = IO.pipe
r.eof?  # يُحجَز التابع للأبد</syntaxhighlight>
==انظر أيضًا==
* التابع [[Ruby/IO/read|<code>read</code>]]: يقرأ ملفًا محددًا بعد فتحه ثم يغلقه قبل إعادة الناتج.
* التابع [[Ruby/IO/readlines|<code>readlines</code>]]: يقرأ ملفًا بأكمله سطرًا سطرًا ثم يعيد تلك الأسطر في [[Ruby/Array|مصفوفة]].
 
* التابع <code>[[Ruby/IO/eof-3F|eof?‎]]</code>: يتحقق إن وصل [[Ruby/IO|المجرى]] الذي استدعي معه إلى نهاية الملف.
==مصادر==
==مصادر==
*[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‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 10:51، 22 ديسمبر 2018

يتحقق التابع eof إن وصل المجرى الذي استدعي معه إلى نهاية الملف؛ مما يعني أنَّه لا توجد بيانات أخرى للقراءة.

يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء IOError.

إن كان المجرى أنبوبًا (pipe) أو مقبسًا (socket)، فسيُحجَز التابع eof?‎ إلى أن يرسل الطرف الآخر بعض البيانات أو يغلقه.

لاحظ أن التابع eof?‎ يقرأ البيانات من مخزن الإدخال المؤقت (input byte buffer). قد لا يتصرف التابع sysread كما كنت تنوي مع eof?‎ إلا إذا استدعيت rewind أولًا (لكن هذا غير متوفر في بعض المجاري).

البنية العامة

eof   true or false
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?  # يُحجَز التابع للأبد

انظر أيضًا

  • التابع read: يقرأ ملفًا محددًا بعد فتحه ثم يغلقه قبل إعادة الناتج.
  • التابع readlines: يقرأ ملفًا بأكمله سطرًا سطرًا ثم يعيد تلك الأسطر في مصفوفة.
  • التابع eof?‎: يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.

مصادر