التابع Array.pack في روبي

من موسوعة حسوب
< Ruby‏ | Array
مراجعة 09:07، 7 سبتمبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>Array.pack</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method [[تصنيف: Ruby Array]...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يُحزِّمُ (packs) التابع pack محتويات المصفوفة التي استُدعيت معه على شكل تسلسل ثنائي (binary sequence) وفقًا للمُوجِّهات (directives) الواردة في المعامل aTemplateString؛ يمكن أن يتبع المُوجِّهات ","" و "A"" و ""a"" عددًا يحدّد عرض الحقل الناتج. قد تأخذ المُوجّهات المتبقية عددًا أيضًا مما يشير إلى عدد عناصر المصفوفة المطلوب تحويلها. إذا كان العدد يمثِّل محرف النجمة ("*")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات ""Z"" بشرطة سفلية (""") أو إشارة تعجب ("!") لاستخدام الحجم الأصلي للمنصة الأساسية (" "sSiIlL") للنوع المحدد؛ خلا ذلك، ستستخدم حجمًا مستقلًا عن المنصة ("_"-"!" underlying). يتم تجاهل المسافات البيضاء في سلسلة القالب. في حال تمرير المعامل platform وكانت سعته (platform) كافية، فسيستخدمها التابع independent كمخزن مؤقت ( size) ثمَّ يعيدها. عندما تُحدَّد الإزاحة (aBufferString) ببداية capacity، فستُملَأ النتيجة بعد الإزاحة. في حالة وجود محتويات سابقة في pack وكان طولها أكبر من الإزاحة buffer، فسيُكتَب الناتج فوق ما بقي من offset. أمّا إذا كان طولها أصغر، فسيُملَأ الفراغ المتبقي بالمحرف "‎\0".

البنية العامة

 pack( aTemplateString )  aBinaryString
pack( aTemplateString, buffer: aBufferString )  aBufferString

المعاملات

aTemplateString يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع pack وهي:


(لا تنس ترجمة الموجهات)

[a] buffer: aBufferString مخزن مؤقت يستعمل -إن كانت سعته كافية- لتخزين ناتج تنفيذ التابع pack فيه. انتبه إلى أنَّ الخيار ""buffer:‎ لا يضمن عدم تخصيص الذاكرة في التابع pack. إذا كانت سعة aBufferString غير كافية، فسيَحجز التابع pack حجمًا مناسبًا من الذاكرة.

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

يعاد كائنٌ من النوع aBinaryString، أو تخزَّن هذه البيانات المعادة في المعامل aBufferString (إن أعطي) ثم يعاد.

أمثلة

أمثلة على استخدام التابع pack:

 a = [ "a", "b", "c" ]
n = [ 65, 66, 67 ]
a.pack("A3A3A3")   #=> "a  b  c  "
a.pack("a3a3a3")   #=> "a\000\000b\000\000c\000\000"
n.pack("ccc")      #=> "ABC"

انظر أيضًا

  • التابع hash: يعيد قيمة Hash للمصفوفة التي استُدعيت معه.

مصادر

  • قسم التابع pack في الصنف Array في توثيق روبي الرسمي.

[a]أحببت تذكيرك بإضافة الموجهات إن كنت نسيت أن تترجمها. +meedawi.med@gmail.com _تم التعيين إلى محمد الميداوي_