2011-05-24 8 views
41

Aksi takdirde,Ruby'de, hash.each_with_index do | [k, v], i |? Gibi bir şeyi kullanmanın bir yolu var mı?

h = {:a => 1, :b => 2.2} 
h.each_with_index do |pair, i| 
    k = pair[0]; v = pair[1] 
    p k, v, i 
end 

ve k ve v bu şekilde ayarlayarak biraz sakar görünüyor olması gerekiyor. Daha basit veya böyle bir şey olabilir mi

h.each_with_index do |[k,v], i| 

?

+3

Sadece bir not: 'k, v = * çift' işlevine sahip olduğunuz herşeyi yapabilmeniz için istediğiniz k 'v = * çift' yapabilirsiniz; k = eşi [0]; v = çift [1]. – coreyward

+1

Hatta 'k, v = çift çalışır. Burada hiçbir * * 'lazım. – molf

cevap

94

Aslında, evet! Parantez kullanın:

h = {:a => 1, :b => 2.2} 
h.each_with_index do |(k, v), i| 
    p k, v, i 
end 
+2

güzel! Ruby 1.8.6 da çalışıyor –

+1

Her gün yeni bir şeyler öğrenin! Teşekkürler! – bheeshmar

1

Enjeksiyon çağrısı, istediğinizi almalı, http://www.ruby-doc.org/core/classes/Enumerable.src/M001494.html bunu kontrol et ve Enjeksiyon bölümüne git, çekicilik gibi çalışmalı!

+0

Nasıl çalıştığını gösterebilecek kısa bir örnek var mı? –

+0

myArray.inject {| kvPair, tohum | //şeyler yapmak! } –

İlgili konular