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

  • arnejann

    arnejann

    3 Kasım 2007
  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • tychoadragmire

    tychoadragmi

    20 Mart 2006