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

  • androidandme

    androidandme

    10 Mart 2009
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009
  • Valdorsha

    Valdorsha

    8 Mayıs 2006