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

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

مراجعة 10:37، 13 نوفمبر 2018

يعلن التابع advise عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.

على أنظمة التشغيل التي لا تدعم استدعاء النظام posix_fadvise(2)‎، هذا التابع سيكون عملية فارغة (no-op).

الوسيط advice (انظر فقرة البنية العامة) سيكون أحد الرموز التالية:

  • normal: - لا نصيحة لتقديمها؛ ستُعتمد الإعدادات الافتراضية للملفات المفتوحة.
  • ‎:sequential - سيتم الدخول إلى البيانات بالتتابع، مع قراءة مواضع الإزاحة (offsets) الدنيا قبل العليا.
  • ‎:random - سيتم الدخول إلى البيانات بترتيب عشوائي.
  • ‎:willneed - سيتم الدخول إلى البيانات في المستقبل القريب.
  • :dontneed‎ - لن يتم الدخول إلى البيانات في المستقبل القريب.
  • ‎:noreuse - لن يتم الدخول إلى البيانات إلا مرة واحدة فقط.

دلالات التوجيهات المُقدمة من advice تعتمد على النظام المُستخدم. انظر صفحةposix_fadvise لمزيد من التفاصيل.

المقصود ب"البيانات": الحيز من الملف الحالي الذي يبدأ عند الإزاحة 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‎

النصيحة أو التوجيه

offset‎

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

len‎

عدد صحيح يمثل الطول

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

يعيد التابع advise القيمة nil.

انظر أيضا

  • التابع autoclose=‎: يُعيّن قيمة راية الإغلاق التلقائي.

مصادر