Estoy creando una aplicación de rieles y han utilizado este código en uno de mis métodos¿Por qué necesito usar .inject (0) en lugar de .inject para que esto funcione?
item_numbers.inject(0) {|sum, i| sum + i.amount}
item_numbers es una matriz de objetos de mi mesa item_numbers. El método .amount que les aplico busca el valor de un item_number en una tabla separada y lo devuelve como un objeto BigDecimal. Obviamente, el método de inyección luego agrega todos los objetos i.amount devueltos y esto funciona bien.
Tengo curiosidad de por qué no funcionó cuando escribí esta declaración como
item_numbers.inject {|sum, i| sum + i.amount}
Según mi libro piqueta de confianza éstos deben ser equivalentes. ¿Es porque i.amount es un BigDecimal? Si es así, ¿por qué ahora funciona? Si no, entonces ¿por qué no funciona?
Usted puede hacer una pequeña prueba (10..15) .inject hacer | suma, i | p suma suma + i final volverá: 10, 21, 33, 46, 60 => 75 como se puede ver _sum_ obtiene primer elemento de matriz como valor inicial – fl00r
lo explica muy bien. Gracias. – brad