SORU
4 Mart 2011, Cuma


Ruby karma her değeri değişen

'%' Ve değeri çok önce ve sonra . eklemek için bir hash her değerini değiştirmek istiyorum

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

değiştirilmelidir

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

Bunu yapmak için en iyi yolu nedir?

CEVAP
4 Mart 2011, Cuma


Eğer gerçek dizeleri kendilerini yerde (muhtemelen arzu edilir ve aynı dize nesneleri diğer başvurular etkileyen) mutasyona istiyorsanız:

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

Eğer karma bir yerde değiştirmek isterseniz, ama dizeleri (yeni ipler almak istiyorum) etkilenmesini istemezsin:

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

Eğer yeni bir karma istiyorsanız:

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • gsipek

    gsipek

    20 Temmuz 2007
  • ThePhestor

    ThePhestor

    22 Mart 2011