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

السؤال

نشر

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

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

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

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

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

Recommended Posts

  • 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}%"] } ]

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...