(1..4).collect do |x|
next if x == 3
x + 1
end # => [2, 3, nil, 5]
# desired => [2, 3, 5]
Si se cumple la condición para next
, collect
pone nil
en la matriz, mientras que lo que estoy tratando de hacer es poner ningún elemento en la matriz devuelta si la condición es reunió. ¿Es esto posible sin llamar al delete_if { |x| x == nil }
en la matriz devuelta?Saltar sobre iteración en enumerables # recoger
(Uso de Ruby 1.8.7; mi código extracto es fuertemente abstraído)
Hermoso código. Esta es una solución mucho mejor que la mía. – Benson
Esta es la respuesta más lenta (aunque no por mucho), pero sin duda es la más limpia. Solo desearía que hubiera una manera de hacer esto con 'collect', ya que hubiera esperado llamar a' next' para que me devolviera _absolutamente nada_, en lugar de "nothing" (aka 'nil'). –
Si es más lento que cualquier otro enfoque, el optimizador de Ruby podría usar algo de trabajo ¿no crees? – Shannon