SORU
2 Aralık 2010, PERŞEMBE


Sıralama anahtarı, iade karma karma Ruby

Bu nesne (Dizi yerine) Karma: karma ve dönüş sıralamak için en iyi yol olacaktır

h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
=> {"a"=>1, "c"=>3, "b"=>2, "d"=>4}

Hash[h.sort]
=> {"a"=>1, "b"=>2, "c"=>3, "d"=>4}

CEVAP
2 Aralık 2010, PERŞEMBE


Not: Ruby >= 1.9.2 sipariş koruyarak bir karma vardır: anahtarları numaralandırılmış olacak eklenen sırasını. Aşağıda eski sürümleri için geçerlidir ya da geriye dönük olarak uyumlu kod.

Sıralanmış bir karma kavramı diye bir şey yok. Yaptığın şey hiç doğru değil.

Eğer isterseniz görüntülemek için, bir dize döndürür sıralanmış:

"{"   h.sort.map{|k,v| "#{k.inspect}=>#{v.inspect}"}.join(", ")   "}"

ya da, eğer sırayla anahtarları istiyorsanız:

h.keys.sort

ya da, Eğer sipariş öğeleri erişmek istiyorsanız:

h.sort.map do |key,value|
  # keys will arrive in order to this block, with their associated value.
end

ama özetle, anlamsız sıralanmış bir karma hakkında konuşmak için yapar. docs, "hangi anahtar veya değer bir karma traverse sırasını rasgele görünebilir, ve genellikle ekleme sırayla olmayacak." Yani karma belirli bir sırayla anahtarları ekleme yardım etmiyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Creavite

    Creavite

    8 Mart 2009
  • macpulenta

    macpulenta

    9 EYLÜL 2006
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006