SORU
26 EKİM 2010, Salı


Karma Yakut dizi

Tamam işte, yıllardır buna bir çözüm bulmak için googling oldum ve insan var iken, aradığım işi gibi görünmüyor.

Temelde bir dizi böyle yapılandırılmış

["item 1", "item 2", "item 3", "item 4"] 

Şuna benzer şekilde, bir Karma dönüştürmek istiyorum

{ "item 1" => "item 2", "item 3" => "item 4" }

yani, bu öğeleri '' dizinler tuşları ve öğeleri 'garip' dizinler değerlerdir.

Bu temiz bir şekilde yapmak için nasıl bir fikriniz var mı? Kaba kuvvet yöntemi sadece ayrı bir diziye bile, tüm dizinler çekin ve sonra onları değerleri eklemek için döngü olurdu sanırım.

CEVAP
26 EKİM 2010, Salı


a = ["item 1", "item 2", "item 3", "item 4"]
h = Hash[*a] # => { "item 1" => "item 2", "item 3" => "item 4" }

İşte bu kadar. * denirsplatoperatör.


@Başına bir uyarı Mike Lewis (yorum): "buna çok dikkat et. Ruby yığında uyarıları genişletir. Eğer büyük bir veri kümesi ile bunu yaparsanız, sizin yığını dışarı darbe için bekliyoruz."

Yani, en genel kullanım durumları için bu yöntem harika, ama eğer çok fazla veri üzerinde dönüştürme yapmak istiyorsanız farklı bir yöntem kullanın. Örneğin, @Forum Niemier (yorum) büyük veri setleri için bu yöntem sunuyor:

h = Hash[a.each_slice(2).to_a]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011