الفرق بين المراجعتين ل"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>maxlen</code> (انظر فقرة البنية العامة) بايت  باستخدام استدعاء النظام <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>outbuf</code> (انظر فقرة البنية العامة)، فينبغي أن يشير إلى [[Ruby/String|سلسلة نصية]]، والتي ستتلقى البيانات.
 +
 
 +
سيُطلق استثناء <code>[[Ruby/SystemCallError|SystemCallError]]</code> عند الخطأ، أو <code>[[Ruby/EOFError|EOFError]]</code> عند نهاية الملف، أو <code>[[Ruby/NotImplementedError|NotImplementedError]]</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|سلسلة نصية]] تتلقى البيانات.
 +
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد التابع <code>pread</code>[[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"
سطر 21: سطر 32:
 
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‎ في توثيق روبي الرسمي.]

مراجعة 16:17، 13 نوفمبر 2018

يقرأ التابع pread من مجرى د/خ maxlen (انظر فقرة البنية العامة) بايت باستخدام استدعاء النظام pread، ثم يُعيدها كسلسلة نصية من غير تعديل إزاحة (offset) الواصف الأساسي.

هذا مفيد مقارنة بالجمع بين التابعين seek و read معًا في كونه ذريًا (atomic)، مما يسمح لعدة مهام فرعية/عمليات بالتشارك في نفس مجرى د/خ لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين في مجرى د/خ.

في حال إعطاء الوسيط الاختياري outbuf (انظر فقرة البنية العامة)، فينبغي أن يشير إلى سلسلة نصية، والتي ستتلقى البيانات.

سيُطلق استثناء SystemCallError عند الخطأ، أو EOFError عند نهاية الملف، أو NotImplementedError إن لم يكن نظام التشغيل يدعم استدعاء النظام.

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

pread(maxlen, offset[, outbuf])  string

المعاملات

maxlen‎

الحد الأقصى للبايتات المقروءة.

offset‎

عدد صحيح يمثل الإزاحة

outbuf‎

سلسلة نصية تتلقى البيانات.

القيمة المُعادة

يعيد التابع preadسلسلة نصية.

أمثلة

مثال على استخدام التابع 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.

مصادر