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

  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006
  • JeezyVEVO

    JeezyVEVO

    12 Mayıs 2009