الفرق بين المراجعتين لصفحة: «Ruby/Array/pack»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>Array.pack</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method [[تصنيف: Ruby Array]...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Array]] | [[تصنيف: Ruby Array]] | ||
يُحزِّمُ ( | يُحزِّمُ (packs) التابع <code>pack</code> محتويات المصفوفة التي استُدعيت معه على شكل تسلسل ثنائي (binary sequence) وفقًا للمُوجِّهات (directives) الواردة في المعامل <code>aTemplateString</code>؛ يمكن أن يتبع المُوجِّهات ",<code>"</code>" و "<code>A"</code>" و "<code>"a"</code>" عددًا يحدّد عرض الحقل الناتج. قد تأخذ المُوجّهات المتبقية عددًا أيضًا مما يشير إلى عدد عناصر المصفوفة المطلوب تحويلها. | ||
إذا كان العدد يمثِّل محرف النجمة ("*")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات "<code> | |||
في حال تمرير المعامل <code> | إذا كان العدد يمثِّل محرف النجمة ("<code>*</code>")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات "<code>sSiIlL</code>" بشرطة سفلية ("<code>_</code>") أو إشارة تعجب ("<code>!</code>") لاستخدام الحجم الأصلي للمنصة الأساسية (underlying platform) للنوع المحدد؛ خلا ذلك، ستستخدم حجمًا مستقلًا عن المنصة (platform-independent size). يتم تجاهل المسافات البيضاء في سلسلة القالب. | ||
في حال تمرير المعامل <code>aBufferString</code> وكانت سعته (capacity) كافية، فسيستخدمها التابع <code>pack</code> كمخزن مؤقت (buffer) ثمَّ يعيدها. عندما تُحدَّد الإزاحة (offset) ببداية <code>aTemplateString</code>، فستُملَأ النتيجة بعد الإزاحة. في حالة وجود محتويات سابقة في <code>aBufferString</code> وكان طولها أكبر من الإزاحة offset، فسيُكتَب الناتج فوق ما بقي من <code>offsetOfBuffer</code>. أمّا إذا كان طولها أصغر، فسيُملَأ الفراغ المتبقي بالمحرف "<code>\0</code>". | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby"> pack( aTemplateString ) → aBinaryString | <syntaxhighlight lang="ruby"> pack( aTemplateString ) → aBinaryString | ||
سطر 11: | سطر 13: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==المعاملات== | ==المعاملات== | ||
<code>aTemplateString</code> | |||
=== <code>aTemplateString</code> === | |||
يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع <code>pack</code> وهي: | يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع <code>pack</code> وهي: | ||
-------(لا تنس ترجمة الموجهات) | -------(لا تنس ترجمة الموجهات) | ||
<code>buffer | === <code>buffer: aBufferString</code> === | ||
مخزن مؤقت يستعمل -إن كانت سعته كافية- لتخزين ناتج تنفيذ التابع <code>pack</code> فيه. | مخزن مؤقت يستعمل -إن كانت سعته كافية- لتخزين ناتج تنفيذ التابع <code>pack</code> فيه. | ||
انتبه إلى أنَّ الخيار | انتبه إلى أنَّ الخيار <code>"buffer:<nowiki>''</nowiki></code> '' لا يضمن عدم تخصيص الذاكرة في التابع <code>pack</code>. إذا كانت سعة <code>aBufferString</code> غير كافية، فسيَحجز التابع <code>pack</code> حجمًا مناسبًا من الذاكرة.'' | ||
==القيم المعادة== | ==القيم المعادة== | ||
يعاد كائنٌ من النوع <code>aBinaryString</code>، أو تخزَّن هذه البيانات المعادة في المعامل <code>aBufferString</code> (إن أعطي) ثم يعاد. | يعاد كائنٌ من النوع <code>aBinaryString</code>، أو تخزَّن هذه البيانات المعادة في المعامل <code>aBufferString</code> (إن أعطي) ثم يعاد. | ||
سطر 33: | سطر 36: | ||
* التابع [[Ruby/Array/hash | <code>hash</code>]]: يعيد قيمة <code>Hash</code> للمصفوفة التي استُدعيت معه. | * التابع [[Ruby/Array/hash | <code>hash</code>]]: يعيد قيمة <code>Hash</code> للمصفوفة التي استُدعيت معه. | ||
==مصادر== | ==مصادر== | ||
* قسم التابع pack في الصنف Array في توثيق روبي الرسمي. | * [https://ruby-doc.org/core-2.5.1/Array.html#method-i-pack قسم التابع pack في الصنف Array في توثيق روبي الرسمي.] | ||
مراجعة 09:15، 7 سبتمبر 2018
يُحزِّمُ (packs) التابع pack
محتويات المصفوفة التي استُدعيت معه على شكل تسلسل ثنائي (binary sequence) وفقًا للمُوجِّهات (directives) الواردة في المعامل aTemplateString
؛ يمكن أن يتبع المُوجِّهات ","
" و "A"
" و ""a"
" عددًا يحدّد عرض الحقل الناتج. قد تأخذ المُوجّهات المتبقية عددًا أيضًا مما يشير إلى عدد عناصر المصفوفة المطلوب تحويلها.
إذا كان العدد يمثِّل محرف النجمة ("*
")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات "sSiIlL
" بشرطة سفلية ("_
") أو إشارة تعجب ("!
") لاستخدام الحجم الأصلي للمنصة الأساسية (underlying platform) للنوع المحدد؛ خلا ذلك، ستستخدم حجمًا مستقلًا عن المنصة (platform-independent size). يتم تجاهل المسافات البيضاء في سلسلة القالب.
في حال تمرير المعامل aBufferString
وكانت سعته (capacity) كافية، فسيستخدمها التابع pack
كمخزن مؤقت (buffer) ثمَّ يعيدها. عندما تُحدَّد الإزاحة (offset) ببداية aTemplateString
، فستُملَأ النتيجة بعد الإزاحة. في حالة وجود محتويات سابقة في aBufferString
وكان طولها أكبر من الإزاحة offset، فسيُكتَب الناتج فوق ما بقي من offsetOfBuffer
. أمّا إذا كان طولها أصغر، فسيُملَأ الفراغ المتبقي بالمحرف "\0
".
البنية العامة
pack( aTemplateString ) → aBinaryString
pack( aTemplateString, buffer: aBufferString ) → aBufferString
المعاملات
aTemplateString
يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع pack
وهي:
(لا تنس ترجمة الموجهات)
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
للمصفوفة التي استُدعيت معه.