الفرق بين المراجعتين لصفحة: «Ruby/IO/pread»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط تدقيق |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby IO]] | [[تصنيف: Ruby IO]] | ||
يقرأ التابع <code>pread</code> من [[Ruby/IO| | يقرأ التابع <code>pread</code> من [[Ruby/IO|المجرى]] الذي استدعي معه عددًا محدَّدًا من البايتات باستخدام استدعاء النظام <code>pread</code>، ثم يُعيدها ك[[Ruby/String|سلسلة نصية]] من غير تعديل إزاحة (offset) الواصف الأساسي. | ||
هذا مفيد مقارنة بالجمع بين التابعين <code>[[Ruby/IO/seek|seek]]</code> و <code>[[Ruby/IO/read|read]]</code> معًا في كونه ذريًا (atomic)، مما يسمح لعدة [[Ruby/Thread|مهام فرعية]]/عمليات | هذا التابع مفيد مقارنة بالجمع بين التابعين <code>[[Ruby/IO/seek|seek]]</code> و <code>[[Ruby/IO/read|read]]</code> معًا في كونه ذريًا (atomic)، مما يسمح لعدة [[Ruby/Thread|مهام فرعية]]/عمليات بتشارك نفس [[Ruby/IO|المجرى]] لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين في [[Ruby/IO|المجرى]]. | ||
سيُطلق الاستثناء <code>[[Ruby/SystemCallError|SystemCallError]]</code> عند حصول خطأ، أو الاستثناء <code>[[Ruby/EOFError|EOFError]]</code> عند الوصول إلى نهاية الملف، أو الاستثناء <code>[[Ruby/NotImplementedError|NotImplementedError]]</code> إن لم يكن نظام التشغيل يدعم استدعاء النظام للدالة <code>pread</code>. | |||
سيُطلق | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">pread(maxlen, offset[, outbuf]) → string</syntaxhighlight> | <syntaxhighlight lang="ruby">pread(maxlen, offset[, outbuf]) → string</syntaxhighlight> | ||
سطر 17: | سطر 15: | ||
===<code>offset</code>=== | ===<code>offset</code>=== | ||
عدد صحيح يمثل | عدد صحيح يمثل مقدار إزاحة المؤشر. | ||
===<code>outbuf</code>=== | ===<code>outbuf</code>=== | ||
[[Ruby/String| | إن أعطي هذا المعامل، فينبغي أن يشير إلى [[Ruby/String|السلسلة النصية]] التي ستتلقى البيانات. | ||
==القيمة | ==القيمة المعادة== | ||
تعاد [[Ruby/String|سلسلة نصية]] تحوي البيانات المقروءة. | |||
==أمثلة== | ==أمثلة== | ||
سطر 31: | سطر 29: | ||
p f.pread(9, 8) # => "line one\n" | p f.pread(9, 8) # => "line one\n" | ||
end</syntaxhighlight> | end</syntaxhighlight> | ||
==انظر | ==انظر أيضًا== | ||
*التابع <code>[[Ruby/IO/print|print]]</code>: يكتب | *التابع <code>[[Ruby/IO/print|print]]</code>: يكتب الكائن (أو الكائنات) المُمرَّرة إليه في [[Ruby/IO|المجرى]] الذي استدعي معه ثم يُعيد القيمة <code>nil</code>. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-pread قسم | *[http://ruby-doc.org/core-2.5.1/IO.html#method-i-pread قسم التابع pread في الصنف IO في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 15:18، 22 ديسمبر 2018
يقرأ التابع pread
من المجرى الذي استدعي معه عددًا محدَّدًا من البايتات باستخدام استدعاء النظام pread
، ثم يُعيدها كسلسلة نصية من غير تعديل إزاحة (offset) الواصف الأساسي.
هذا التابع مفيد مقارنة بالجمع بين التابعين seek
و read
معًا في كونه ذريًا (atomic)، مما يسمح لعدة مهام فرعية/عمليات بتشارك نفس المجرى لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين في المجرى.
سيُطلق الاستثناء SystemCallError
عند حصول خطأ، أو الاستثناء EOFError
عند الوصول إلى نهاية الملف، أو الاستثناء NotImplementedError
إن لم يكن نظام التشغيل يدعم استدعاء النظام للدالة pread
.
البنية العامة
pread(maxlen, offset[, outbuf]) → string
المعاملات
maxlen
الحد الأقصى للبايتات المقروءة.
offset
عدد صحيح يمثل مقدار إزاحة المؤشر.
outbuf
إن أعطي هذا المعامل، فينبغي أن يشير إلى السلسلة النصية التي ستتلقى البيانات.
القيمة المعادة
تعاد سلسلة نصية تحوي البيانات المقروءة.
أمثلة
مثال على استخدام التابع pread
:
File.write("testfile", "This is line one\nThis is line two\n")
File.open("testfile") do |f|
p f.read # => "This is line one\nThis is line two\n"
p f.pread(12, 0) # => "This is line"
p f.pread(9, 8) # => "line one\n"
end
انظر أيضًا
- التابع
print
: يكتب الكائن (أو الكائنات) المُمرَّرة إليه في المجرى الذي استدعي معه ثم يُعيد القيمةnil
.