• 0

كيف أضم مصفوفتين في hash واحد في روبي؟

لدي مصفوفتين كما تظهران في المثال التالي:

members     = ["Matt Anderson", "Justin Biltonen", "Jordan Luff", "Jeremy London"]
instruments = ["guitar, vocals", "guitar", "bass", "drums"]

أريد ضم المصفوفتين مع بعض لينتج لنا Hash كما في المثال التالي (لاحظ الفواصل):

{"Matt Anderson"=>["guitar", "vocals"], "Justin Biltonen"=>"guitar", "Jordan Luff"=>"bass", "Jeremy London"=>"drums"}

فكيف أستطيع فعل ذلك في لغة روبي؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

أعتقد أن أفضل طريقة لضم مصفوفتين لبعض مع الانتباه إلى الفواصل؛ هي عن طريق استخدام map و split. أولا حوّل السلاسل النصية المتكونة من أكثر من جزء (المفصولة بفاصل) إلى مصفوفات كما في المثال التالي:

instruments.map {|i| i.include?(',') ? (i.split /, /) : i}

ومن ثم استخدم Hash[] وzip لدمج مصفوفة members مع مصفوفة instruments لتصبح الشيفرة البرمجية الكاملة (بعد إضافة المثال السابق) كما في المثال التالي:

Hash[members.zip(instruments.map {|i| i.include?(',') ? (i.split /, /) : i})]

وسوف تحصل في النهاية على هذه النتيجة:

{"Jeremy London"=>"drums",
 "Matt Anderson"=>["guitar", "vocals"],
 "Jordan Luff"=>"bass",
 "Justin Biltonen"=>"guitar"}

أو يمكنك تحويل جميع النتائج إلى قوائم عن طريق استخدام السطر التالي:

Hash[members.zip(instruments.map {|i| i.split /, /})]

والذي سوف يعطيك:

{"Jeremy London"=>["drums"],
 "Matt Anderson"=>["guitar", "vocals"],
 "Jordan Luff"=>["bass"],
 "Justin Biltonen"=>["guitar"]}

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن