10 Mart 2011, PERŞEMBE
Dizi#her vs Dizi#göster
hash = { "d" => [11, 22], "f" => [33, 44, 55] }
# case 1
hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",")
=> "d:11,d:22,f:33,f:44,f:55"
# case 2
hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",")
=> "11,22,33,44,55"
tek fark vs.map
, durum 2 kullanır vs.each
kullanır durumda 1'dir.
Burada ne oldu?
CEVAP
10 Mart 2011, PERŞEMBE
Array#each
dizinin her elemanı için verilen bloğu yürütür, dizinin kendisi verir.
Array#map
Ayrıca dizinin her elemanı için verilen bloğu yürütür, ama blok her yineleme dönüş değerlerini içeren yeni bir dizi döndürür.
Örnek: bir dizi bu şekilde tanımlanmış olduğunu varsayalım:
arr = ["tokyo", "london", "rio"]
Sonra each
yürütme deneyin:
arr.each { |element| element.capitalize }
# => ["tokyo", "london", "rio"]
Sadece aynı dizi olduğunu unutmayın. each
blok içinde kod infaz ediliyor, ama hesaplanan değer döndürülür; ve kod herhangi bir yan etkisi olarak, bu örnek, hiçbir yararlı iş yapar.
Aksine, dizinin 13 ** yöntemin çağrılması dönüş map
blok yürütme her turun değerleri içeren yeni bir dizi döndürür:
arr.map { |element| element.capitalize }
# => ["Tokyo", "London", "Rio"]
Bunu Paylaş:
Ruby, 'seçin birleştiren bir Dizi...
Dizi#her vs Dizi#göster...
nesneleri göster (dizi yerine)...
JavaScript "Dizi(n)" yeni; ve...
Bulma üç unsurun belirli bir sayıya en...