Soy nuevo en Ruby, y estoy teniendo un problema extraño con el método de inyección.Clase Nil al usar la inyección de Ruby
Cuando hago:
(1..10).inject(0) {|count,x| count + 1}
el resultado es 10, como se esperaba. Pero cuando lo haga
(1..10).inject(0) {|count,x| count + 1 if (x%2 == 0)}
consigo un error:
NoMethodError: undefined method `+' for nil:NilClass
from (irb):43
from (irb):43:in `inject'
from (irb):43:in `each'
from (irb):43:in `inject'
from (irb):43
yo no entiendo muy bien por qué (presumiblemente) recuento es nulo en el segundo ejemplo, pero no el primero. En cualquier caso, ¿cómo voy a contar los evens de 1 a 10 usando Inject?
Si está utilizando Rubí 1.8.7+, también se puede utilizar # Enumerable recuento, es decir, '(1..10) .count (Y:? Incluso)' –
Cómo adorable !! - –
¡Gracias! Eso tiene perfecto sentido ahora. En términos de eficiencia, ¿la inyección es mucho mejor, ya que no crea una matriz adicional? En este ejemplo, no importa mucho, pero ¿y si seleccionáramos miles de valores de un rango mucho más grande? –