الجديد

حشوات في روبي

حشوات في روبي

المصفوفات ليست هي الطريقة الوحيدة لإدارة مجموعات المتغيرات في روبي. نوع آخر من مجموعة المتغيرات هو مزيج، وتسمى أيضا مجموعة النقابي. يشبه التجزئة صفيفًا لأنه متغير يقوم بتخزين المتغيرات الأخرى. ومع ذلك ، فإن التجزئة لا يشبه الصفيف في أن المتغيرات المخزنة لا يتم تخزينها في أي ترتيب معين ، ويتم استردادها باستخدام مفتاح بدلاً من وضعها في المجموعة.

إنشاء تجزئة مع أزواج المفتاح / القيمة

تجزئة مفيدة لتخزين ما يسمى أزواج المفتاح / القيمة. يحتوي زوج المفتاح / القيمة على معرف للدلالة على أي متغير من التجزئة الذي تريد الوصول إليه و متغير لتخزين في هذا الموقف في التجزئة. على سبيل المثال ، قد يخزن المعلم درجات الطالب في علامة تجزئة. سيتم الوصول إلى علامة Bob في علامة تجزئة بواسطة المفتاح "Bob" ويكون المتغير المخزن في ذلك الموقع هو درجة Bob.

يمكن إنشاء متغير تجزئة بنفس طريقة متغير صفيف. إن أبسط طريقة هي إنشاء كائن تجزئة فارغ وملء أزواج المفتاح / القيمة. لاحظ أنه يتم استخدام معامل الفهرس ، لكن يتم استخدام اسم الطالب بدلاً من الرقم.

تذكر أن التجزئات غير مرتبة ، مما يعني أنه لا توجد بداية أو نهاية محددة كما هو الحال في صفيف. لذلك ، لا يمكنك إلحاق التجزئة. يتم إدراج القيم ببساطة في التجزئة باستخدام معامل الفهرس.

#! / usr / bin / env ruby
الدرجات = Hash.new
الدرجات "بوب" = 82
الدرجات "Jim" = 94
الدرجات "بيلي" = 58
يضع الدرجات "جيم"

تجزئة الآداب

تمامًا مثل المصفوفات ، يمكن إنشاء تجزئة بأحرف تجزئة. تستخدم حرفية تجزئة الأقواس المتعرجة بدلاً من الأقواس المربعة ، ويتم ربط أزواج القيمة الرئيسية =>. على سبيل المثال ، تبدو علامة التجزئة المزودة بزوج مفتاح / قيمة واحدة في Bob / 84 كما يلي: {"Bob" => 84}. يمكن إضافة أزواج المفتاح / القيمة الإضافية إلى حرفي التجزئة من خلال فصلها بفواصل. في المثال التالي ، يتم إنشاء التجزئة مع الدرجات لعدد من الطلاب.

#! / usr / bin / env ruby
الدرجات = {"Bob" => 82 ،
"جيم" => 94 ،
"بيلي" => 58
}
يضع الدرجات "جيم"

الوصول إلى المتغيرات في التجزئة

قد تكون هناك أوقات يجب فيها الوصول إلى كل متغير في التجزئة. لا يزال بإمكانك حلقة فوق المتغيرات في التجزئة باستخدام كل حلقة ، على الرغم من أنها لن تعمل بنفس طريقة استخدام كل حلقة مع مجموعة المتغيرات. لأن التجزئة غير مرتبة ، الترتيب الذي كل سوف لا تتكرر أزواج المفاتيح / القيمة مع نفس الترتيب الذي أدخلته به. في هذا المثال ، سيتم تجزئة علامة من التقديرات وطباعتها.

#! / usr / bin / env ruby
الدرجات = {"Bob" => 82 ،
"جيم" => 94 ،
"بيلي" => 58
}
grades.each do | name، grade |
يضع "# {name}: # {grade}"
النهاية