SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • Hak5

    Hak5

    7 EYLÜL 2005
  • Phandroid

    Phandroid

    26 Ocak 2009