• 0

كيف أُغيّر جميع قيم hash في روبي؟

أريد تغيير جميع القيم الموجودة في متغير من نوع hash وإضافة % قبل وبعد القيمة، فلو افترضنا أن قيم المتغير كالتالي:

{ :a=>'a' , :b=>'b' }

فأريدها أن تتغير إلى:

{ :a=>'%a%' , :b=>'%b%' }

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

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


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

هنالك عدة طرق لتغيير القيم الموجود في hash معين في روبي، فإذا كنت ترغب تغيير نفس السلسلة النصية دون أن تحصل على سلسلة نصية جديدة فيمكنك في هذه الحالة استخدام توابع مثل gsub! أو replace كما في المثال التالي (أي سطر من السطرين يفي بالغرض):

# Two ways to achieve the same result (any Ruby version)
my_hash.each{ |_,str| str.gsub! /^|$/, '%' }
my_hash.each{ |_,str| str.replace "%#{str}%" }

أما لو أردت تغيير السلاسل النصية فيمكنك الاستعانة بهذه الشيفرة البرمجية (كما في المثال الأول؛ أي سطر من السطرين يفي بالغرض):

# Two ways to achieve the same result (any Ruby version)
my_hash.each{ |key,str| my_hash[key] = "%#{str}%" }
my_hash.inject(my_hash){ |h,(k,str)| h[k]="%#{str}%"; h }

أما لو أردت الحصول على hash جديد بالتغييرات الجديدة فيمكنك استخدام هذه الشيفرة:

# Ruby 1.8.6+
new_hash = Hash[*my_hash.map{|k,str| [k,"%#{str}%"] }.flatten]

# Ruby 1.8.7+
new_hash = Hash[my_hash.map{|k,str| [k,"%#{str}%"] } ]

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


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

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

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

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


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

تسجيل الدخول

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


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