SORU
2 NİSAN 2009, PERŞEMBE


Yöntem enjekte basit bir açıklamaya ihtiyacım var

[1, 2, 3, 4].inject(0) { |result, element| result   element } # => 10

Bu kod bakıyorum ama beynim 10 sonuç olabileceğini kaydediyor. Biri burada neler olduğunu açıklayan bir sakıncası var mı?

CEVAP
2 NİSAN 2009, PERŞEMBE


Bir akümülatör olarak ilk bloğu bağımsız düşünebilirsiniz: blok her çalışma akümülatör saklanan ve daha sonra blok bir sonraki yürütme geçirilir sonucu. Kodu yukarıda gösterilen durumda, akü varsaymak, 0 sonuç. Blok her çalışma mevcut toplam verilen numara ekler ve sonra sonucu geri akümülatör içine saklar. Sonraki blok çağrısı bu yeni değeri vardır, ekler, tekrar depolar ve tekrarlar.

Bu sürecin sonunda, enjekte bu durumda dizideki bütün değerleri toplamı olan akü, ya da 10 verir.

Burada nesne, dize gösterimine anahtarlı bir dizi bir karma oluşturmak için başka bir basit örnek:

[1,"a",Object.new,:hi].inject({}) do |hash, item|
  hash[item.to_s] = item
  hash
end

Bu durumda, boş bir karma bizim akümülatör, o zaman her zaman doldurma varsayarak biz bu bloğu yürütür. Blok sonucu akümülatör içinde saklı dönecek çünkü blok son satırı olarak karma dönmek zorundayız dikkat edin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ShoSho

    ShoSho

    20 Ocak 2010
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013
  • SRI International

    SRI Internat

    30 NİSAN 2008