التابع IO.advise
في روبي
يعلن التابع advise
عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد. على أنظمة التشغيل التي لا تدعم استدعاء النظام posix_fadvise(2)
، هذه التابع عبارة عن عملية فارغة (no-op).
الوسيط advice
سيكون أحد الرموز التالية:
- normal
لا نصيحة لتقديمها؛ الإعدادات الافتراضية لملف مفتوح.
:sequential
سيتم الدخول إلى البيانات بالتتابع، مع قراءة مواضع الإزاحة (offsets) الدنياا قبل العليا.
:random
سيتم الدخول إلى البيانات بترتيب عشوائي.
:willneed
سيتم الدخول إلى البيانات في المستقبل القريب.
:dontneed
لن يتم الدخول إلى البيانات في المستقبل القريب.
:noreuse
لن يتم الدخول إلى البيانات إلا مرة واحدة فقط.
دلالات التوجيهات التي يقدمها الوسيط advice تعتمد على النظام المُستخدم. انظر صفحة man 2
posix_fadvise
لمزيد من التفاصيل.
المقصود ب"البيانات" الحيز من الملف الحالي الذي يبدأ عند offset
ويمتد لـ len
بايت. إن كان len
يساوي 0، فسينتهي الحيّز عند البايت الأخير من الملف. افتراضيا، كلا الوسيطين offset
و len
يساويان 0، أي أن النصيحة تنطبق على الملف بأكمله.
في حالة حدوث خطأ، سيُطلق أحد الاستثناءات التالية:
IOError
مجرى د/خ IO
مغلق.
Errno::EBADF
واصف الملف الخاص بالملف الحالي غير صالح.
Errno::EINVAL
تم إعطاء قيمة غير صالحة للوسيط advice
.
Errno::ESPIPE
يشير واصف الملف الخاص بالملف الحالي إلى أنبوب أو أنبوب مسمى (FIFO). (يطلق اللينكس الخطأ Errno::EINVAL
في هذه الحالة).
TypeError
إما أنّ الوسيط advice
ليس رمزا Symbol
، أو أنّ أحد الوسائط الأخرى ليس عدد صحيحا Integer
.
RangeError
أحد من الوسائط المعطاة كبير جدا، أو صغير جدا.
هذه القائمة ليست شاملة؛ أخطاء أخرى Errno
الاستثناءات ممكنة أيضا.
البنية العامة
advise(advice, offset=0, len=0) → nil
المعاملات
advice
offset
عدد صحيح يمثل الإزاحة
len
القيمة المُعادة
انظر أيضا
- التابع
<<
: مجرى الإخراج النصيString
- يكتبobj
(انظر فقرة البنية العامة) في المجرىios
. سيتم تحويلobj
إلى سلسلة نصية باستخدامto_s
. - التابع
autoclose=
: يُعيّن قيمة راية الإغلاق التلقائي.