الفرق بين المراجعتين ل"Ruby/IO/advise"

من موسوعة حسوب
< Ruby‏ | IO
اذهب إلى التنقل اذهب إلى البحث
ط (تدقيق)
 
سطر 5: سطر 5:
 
يعلن التابع <code>advise</code> عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.
 
يعلن التابع <code>advise</code> عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.
  
على أنظمة التشغيل التي لا تدعم استدعاء النظام <code>posix_fadvise(2)‎</code>، هذا التابع سيكون عملية فارغة (no-op).
+
في أنظمة التشغيل التي لا تدعم استدعاء النظام <code>posix_fadvise(2)‎</code>، هذا التابع سيكون عمليةً فارغةً (no-op).
  
الوسيط <code>advice</code> (انظر فقرة البنية العامة) سيكون أحد الرموز التالية:
+
المقصود بـ "البيانات" هي الحيز من الملف الحالي الذي يبدأ عند الإزاحة <code>offset</code> (انظر قسم البينة العامة) ويمتد حتى <code>len</code> بايت. إن كان <code>len</code> يساوي <code>0</code>، فسينتهي الحيّز عند البايت الأخير من الملف. افتراضيًّا، كلا الوسيطين <code>offset</code> و <code>len</code> يساويان <code>0</code>، أي أن النصيحة تنطبق على الملف بأكمله.
* <code>normal:</code> - لا نصيحة لتقديمها؛ ستُعتمد الإعدادات الافتراضية للملفات المفتوحة.
 
* <code>‎:sequential</code> - سيتم الدخول إلى البيانات بالتتابع، مع قراءة مواضع الإزاحة (offsets) الدنيا قبل العليا.
 
  
* <code>‎:random</code> - سيتم الدخول إلى البيانات بترتيب عشوائي.
+
في حالة حدوث خطأ، سيُطلَق أحد الاستثناءات التالية:
* <code>‎:willneed</code> - سيتم الدخول إلى البيانات في المستقبل القريب.
+
* <code>[[Ruby/IOError|IOError]]</code>: [[Ruby/IO|مجرى د/خ]] مغلق.
* ‎<code>:dontneed‎</code> - لن يتم الدخول إلى البيانات في المستقبل القريب.
 
* <code>‎:noreuse</code> - لن يتم الدخول إلى البيانات إلا مرة واحدة فقط.
 
دلالات التوجيهات المُقدمة من <code>advice</code> تعتمد على النظام المُستخدم. انظر صفحة<code>posix_fadvise</code> لمزيد من التفاصيل.
 
 
 
المقصود ب"البيانات": الحيز من الملف الحالي الذي يبدأ عند الإزاحة <code>offset</code> ويمتد لـ <code>len</code> بايت. إن كان <code>len</code> يساوي <code>0</code>، فسينتهي الحيّز عند البايت الأخير من الملف. افتراضيا، كلا الوسيطين <code>offset</code> و <code>len</code> يساويان <code>0</code>، أي أن النصيحة تنطبق على الملف بأكمله.
 
 
 
في حالة حدوث خطأ، سيُطلق أحد الاستثناءات التالية:
 
* <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::EINVAL</code> في هذه الحالة).
+
* <code>Errno::ESPIPE</code>: يشير واصف الملف الحالي إلى أنبوب (pipe) أو أنبوب مسمى (FIFO). (يطلق في لينكس الخطأ <code>Errno::EINVAL</code> في هذه الحالة).
* <code>TypeError</code>: إما أنّ الوسيط <code>advice</code> ليس [[Ruby/Symbol|رمز]]ا، أو أنّ أحد الوسائط الأخرى ليس [[Ruby/Integer|عدد صحيح]]ا.
+
* <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>أخرى، كما أن الاستثناءات ممكنة أيضا.
+
هذه القائمة ليست شاملة لجميع الاستثناءات؛ فهناك أخطاء <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>advise</code> القيمة <code>nil</code>.
+
تعاد القيمة <code>nil</code>.
  
==انظر أيضا==
+
==انظر أيضًا==
*التابع <code>[[Ruby/IO/autoclose-3D|autoclose=‎]]</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 قسم التابع advise‎ في الصنف IO‎ في توثيق روبي الرسمي.]
+
*[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 الذي جرى إنشاؤه كوسيط إلى الكتلة المعطاة ثم يعيد الناتج الذي تعيده الكتلة.

مصادر