التابع IO.pread‎ في روبي

من موسوعة حسوب
< Ruby‏ | 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

مصادر