الفرق بين المراجعتين لصفحة: «Ruby/IO/advise»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط تدقيق |
||
سطر 5: | سطر 5: | ||
يعلن التابع <code>advise</code> عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد. | يعلن التابع <code>advise</code> عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد. | ||
في أنظمة التشغيل التي لا تدعم استدعاء النظام <code>posix_fadvise(2)</code>، هذا التابع سيكون عمليةً فارغةً (no-op). | |||
المقصود بـ "البيانات" هي الحيز من الملف الحالي الذي يبدأ عند الإزاحة <code>offset</code> (انظر قسم البينة العامة) ويمتد حتى <code>len</code> بايت. إن كان <code>len</code> يساوي <code>0</code>، فسينتهي الحيّز عند البايت الأخير من الملف. افتراضيًّا، كلا الوسيطين <code>offset</code> و <code>len</code> يساويان <code>0</code>، أي أن النصيحة تنطبق على الملف بأكمله. | |||
في حالة حدوث خطأ، سيُطلَق أحد الاستثناءات التالية: | |||
* <code>[[Ruby/IOError|IOError]]</code>: [[Ruby/IO|مجرى د/خ]] مغلق. | |||
في حالة حدوث خطأ، | |||
* <code>IOError</code>: [[Ruby/IO|مجرى د/خ]] مغلق. | |||
* <code>Errno::EBADF</code>: واصف الملف (file descriptor) الحالي غير صالح. | * <code>Errno::EBADF</code>: واصف الملف (file descriptor) الحالي غير صالح. | ||
* <code>Errno::EINVAL</code>: تم إعطاء قيمة غير صالحة للوسيط <code>advice</code>. | * <code>Errno::EINVAL</code>: تم إعطاء قيمة غير صالحة للوسيط <code>advice</code>. | ||
* <code>Errno::ESPIPE</code>: يشير واصف الملف الحالي إلى أنبوب (pipe) أو أنبوب مسمى (FIFO). (يطلق | * <code>Errno::ESPIPE</code>: يشير واصف الملف الحالي إلى أنبوب (pipe) أو أنبوب مسمى (FIFO). (يطلق في لينكس الخطأ <code>Errno::EINVAL</code> في هذه الحالة). | ||
* <code>TypeError</code>: إما أنّ الوسيط <code>advice</code> ليس [[Ruby/Symbol| | * <code>[[Ruby/TypeError|TypeError]]</code>: إما أنّ الوسيط <code>advice</code> ليس [[Ruby/Symbol|رمزً]]ا، أو أنّ أحد الوسائط الأخرى ليس [[Ruby/Integer|عددًا صحيحً]]ا. | ||
* <code>RangeError</code>: أحد الوسائط المعطاة كبير | * <code>[[Ruby/RangeError|RangeError]]</code>: أحد الوسائط المعطاة كبير جدًا، أو صغير جدًا. | ||
هذه القائمة ليست | هذه القائمة ليست شاملة لجميع الاستثناءات؛ فهناك أخطاء <code>[[Ruby/Errno|Errno]]</code>أخرى، كما أن الاستثناءات ممكنة أيضًا. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">advise(advice, offset=0, len=0) → nil</syntaxhighlight> | <syntaxhighlight lang="ruby">advise(advice, offset=0, len=0) → nil</syntaxhighlight> | ||
==المعاملات== | ==المعاملات== | ||
===<code>advice</code>=== | ===<code>advice</code>=== | ||
يأخذ هذا المعامل أحد الرموز التالية: | |||
* <code>normal:</code> - لا نصيحة (advice) لتقديمها؛ ستُعتمَد الإعدادات الافتراضية للملفات المفتوحة. | |||
* <code>:sequential</code> - سيتم الوصول إلى البيانات بالتتابع، مع قراءة مواضع الإزاحة (offsets) الدنيا قبل العليا. | |||
* <code>:random</code> - سيتم الوصول إلى البيانات بترتيب عشوائي. | |||
* <code>:willneed</code> - سيتم الوصول إلى البيانات في المستقبل القريب. | |||
* <code>:dontneed</code> - لن يتم الوصول إلى البيانات في المستقبل القريب. | |||
* <code>:noreuse</code> - لن يتم الوصول إلى البيانات إلا مرةً واحدةً فقط. | |||
دلالات التوجيهات التي يقدمها المعامل <code>advice</code> تعتمد على النظام المُستخدَم. انظر صفحة الدليل man للدالة <code>posix_fadvise</code> لمزيد من التفاصيل. | |||
===<code>offset</code>=== | ===<code>offset</code>=== | ||
عدد صحيح يمثل الإزاحة | عدد صحيح يمثل الإزاحة. القيمة الافتراضية هي: 0. | ||
===<code>len</code>=== | ===<code>len</code>=== | ||
عدد صحيح يمثل الطول | عدد صحيح يمثل الطول الذي يشكل حيز البيانات. القيمة الافتراضية هي: 0. | ||
==القيمة | ==القيمة المعادة== | ||
تعاد القيمة <code>nil</code>. | |||
==انظر | ==انظر أيضًا== | ||
* | *التابع [[Ruby/IO/open|<code>open</code>]]: يشبه التابعَ <code>[[Ruby/IO/new|new]]</code> تمامًا عند استدعائه دون كتلة، أو يُمرّر الكائن <code>IO</code> الذي جرى إنشاؤه كوسيط إلى الكتلة المعطاة ثم يعيد الناتج الذي تعيده الكتلة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-advise قسم | *[http://ruby-doc.org/core-2.5.1/IO.html#method-i-advise قسم التابع advise في الصنف IO في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 08:23، 22 ديسمبر 2018
يعلن التابع advise
عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.
في أنظمة التشغيل التي لا تدعم استدعاء النظام posix_fadvise(2)
، هذا التابع سيكون عمليةً فارغةً (no-op).
المقصود بـ "البيانات" هي الحيز من الملف الحالي الذي يبدأ عند الإزاحة offset
(انظر قسم البينة العامة) ويمتد حتى len
بايت. إن كان len
يساوي 0
، فسينتهي الحيّز عند البايت الأخير من الملف. افتراضيًّا، كلا الوسيطين offset
و len
يساويان 0
، أي أن النصيحة تنطبق على الملف بأكمله.
في حالة حدوث خطأ، سيُطلَق أحد الاستثناءات التالية:
IOError
: مجرى د/خ مغلق.Errno::EBADF
: واصف الملف (file descriptor) الحالي غير صالح.Errno::EINVAL
: تم إعطاء قيمة غير صالحة للوسيطadvice
.Errno::ESPIPE
: يشير واصف الملف الحالي إلى أنبوب (pipe) أو أنبوب مسمى (FIFO). (يطلق في لينكس الخطأErrno::EINVAL
في هذه الحالة).TypeError
: إما أنّ الوسيطadvice
ليس رمزًا، أو أنّ أحد الوسائط الأخرى ليس عددًا صحيحًا.RangeError
: أحد الوسائط المعطاة كبير جدًا، أو صغير جدًا.
هذه القائمة ليست شاملة لجميع الاستثناءات؛ فهناك أخطاء Errno
أخرى، كما أن الاستثناءات ممكنة أيضًا.
البنية العامة
advise(advice, offset=0, len=0) → nil
المعاملات
advice
يأخذ هذا المعامل أحد الرموز التالية:
normal:
- لا نصيحة (advice) لتقديمها؛ ستُعتمَد الإعدادات الافتراضية للملفات المفتوحة.:sequential
- سيتم الوصول إلى البيانات بالتتابع، مع قراءة مواضع الإزاحة (offsets) الدنيا قبل العليا.
:random
- سيتم الوصول إلى البيانات بترتيب عشوائي.:willneed
- سيتم الوصول إلى البيانات في المستقبل القريب.-
:dontneed
- لن يتم الوصول إلى البيانات في المستقبل القريب. :noreuse
- لن يتم الوصول إلى البيانات إلا مرةً واحدةً فقط.
دلالات التوجيهات التي يقدمها المعامل advice
تعتمد على النظام المُستخدَم. انظر صفحة الدليل man للدالة posix_fadvise
لمزيد من التفاصيل.
offset
عدد صحيح يمثل الإزاحة. القيمة الافتراضية هي: 0.
len
عدد صحيح يمثل الطول الذي يشكل حيز البيانات. القيمة الافتراضية هي: 0.
القيمة المعادة
تعاد القيمة nil
.
انظر أيضًا
- التابع
open
: يشبه التابعَnew
تمامًا عند استدعائه دون كتلة، أو يُمرّر الكائنIO
الذي جرى إنشاؤه كوسيط إلى الكتلة المعطاة ثم يعيد الناتج الذي تعيده الكتلة.