اذهب إلى المحتوى
  • 0

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

MaxReve

السؤال

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

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"}

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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"]}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...