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
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]
Bir değeri olmadığını kontrol Yakut bi...
Nasıl (yığın) X element parçaya Yakut ...
Nasıl ruby hash değerleri ile karma bi...
Ruby bir karma için bir dizi dönüştürm...
Dize dönüştürme yakut dizi...