الفرق بين المراجعتين لصفحة: «Ruby/IO/pread»

من موسوعة حسوب
< Ruby‏ | IO
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>IO.pread‎</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby IO...'
 
ط تدقيق
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby IO]]
[[تصنيف: Ruby IO]]
يقرأ التابع <code>pread</code> <code>maxlen</code> (انظر فقرة البنية العامة) بايت من [[Ruby/IO|مجرى د/خ]] <code>ios</code> باستخدام استدعاء النظام pread، ثم يُعيدها ك[[Ruby/String|سلسلة نصية]] من غير تعديل إزاحة (offset) الواصف الأساسي. هذا مفيد مقارنة بالجمع بين <code>[[Ruby/IO/seek|#seek]]</code> و <code>[[Ruby/IO/read|#read]]</code> في كونه ذريًا (atomic)، مما يسمح لعدة [[Ruby/Thread|مهام فرعية]]/عمليات بالتشارك في نفس [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code> لقراءة الملف في مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين من طبقة [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code>. في حال إعطاء الوسيط الاختياري <code>outbuf</code> (انظر فقرة البنية العامة)، فينبغي أن يشير إلى [[Ruby/String|سلسلة نصية]] <code>[[Ruby/String|String]]</code>، والتي ستتلقى البيانات. سيُطلق استثناء <code>SystemCallError</code> عند الخطأ، أو <code>EOFError</code> عند نهاية الملف، أو <code>NotImplementedError</code> إن لم يكن نظام التشغيل يدعم استدعاء النظام.
يقرأ التابع <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|مهام فرعية]]/عمليات بتشارك نفس [[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>
==المعاملات==
==المعاملات==
===<code>maxlen‎</code>===
===<code>maxlen‎</code>===
الحد الأقصى للبايتات المقروءة.
===<code>offset‎</code>===
===<code>offset‎</code>===
عدد صحيح يمثل الإزاحة
عدد صحيح يمثل مقدار إزاحة المؤشر.
===<code>outbuf‎</code>===
===<code>outbuf‎</code>===
==القيمة المُعادة==
إن أعطي هذا المعامل، فينبغي أن يشير إلى [[Ruby/String|السلسلة النصية]] التي ستتلقى البيانات.
 
==القيمة المعادة==
تعاد [[Ruby/String|سلسلة نصية]] تحوي البيانات المقروءة.
 
==أمثلة==
==أمثلة==
مثال على استخدام التابع <code>pread‎</code>:
مثال على استخدام التابع <code>pread‎</code>:<syntaxhighlight lang="ruby">File.write("testfile", "This is line one\nThis is line two\n")
<syntaxhighlight lang="ruby">File.write("testfile", "This is line one\nThis is line two\n")
File.open("testfile") do |f|
File.open("testfile") do |f|
   p f.read          # => "This is line one\nThis is line two\n"
   p f.read          # => "This is line one\nThis is line two\n"
سطر 20: سطر 29:
   p f.pread(9, 8)    # => "line one\n"
   p f.pread(9, 8)    # => "line one\n"
end‎</syntaxhighlight>
end‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضًا==
* التابع <code>[[Ruby/IO/pos-3D|pos=]]</code>: يسعى  إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ليس مضمونا أن يكون التموضع صحيحًا عندما يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> في الوضع النصي (textmode).
*التابع <code>[[Ruby/IO/print|print]]</code>: يكتب الكائن (أو الكائنات) المُمرَّرة إليه في [[Ruby/IO|المجرى]] الذي استدعي معه ثم يُعيد القيمة <code>nil</code>. 
* التابع <code>[[Ruby/IO/print|print]]</code>: يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ثم يُعيد <code>nil</code>.
==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-pread قسم التابع pread‎ في الصنف IO‎ في توثيق روبي الرسمي.]
*[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

مصادر