Starší komentáře ke článku: Ruby po kapkách (6.) - iterátory a Enumerable

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: mikrom

Datum vložení: 1.6.2009 22:58:06

Pozeral som na [b]inject[/b] a vyzera, ze funguje trochu inak ako je popisane v clanku Tento kod: ------------------------------------------- # Toto result = [1, 2, 3, 4, 5].inject { |suma, e| suma + e } puts result.inspect # funguje zrejme takto result = 0 [1, 2, 3, 4, 5].inject { |suma, e| puts "suma = #{suma}" puts "e = #{e}" result = result + suma.to_i + e puts "result = result + suma + e = #{result}" } ------------------------------------------- dava toto: ------------------------------------------- 15 suma = 1 e = 2 result = result + suma + e = 3 suma = e = 3 result = result + suma + e = 6 suma = e = 4 result = result + suma + e = 10 suma = e = 5 result = result + suma + e = 15 ------------------------------------------- To znamena, ze v 1.iteracii maju parametre bloku hodnotu suma = 1 e = 2 v 2.iteracii suma = e = 3 v 3.iteracii suma = e = 4 ...atd Takze [b]suma[/b] je naplnena len v 1.iteracii, v dalsich sa naplna len [b]e[/b]. Vysledok metody [b]inject[/b] sa teda neuklada do 1.parametru bloku (suma), ale musi sa pocitat niekde bokom, tak ako ja pocitam [b]result[/b].

Zpět na článek | Úvodní stránka Interval.cz