que tienen un método arbitrario en Ruby que produce múltiples valores para que pueda ser entregado a un bloque:¿Puede un método Ruby rendir como un iterador o devolver una matriz según el contexto?
def arbitrary
yield 1
yield 2
yield 3
yield 4
end
arbitrary { |x| puts x }
me gustaría modificar este método de manera que, si no hay un bloque, simplemente devuelve el valores como una matriz. Entonces esta construcción también funcionaría:
myarray = arbitrary
p a -----> [1, 2, 3, 4, 5]
¿Es esto posible en Ruby?
Perfecto, gracias. –
Si reemplaza "if block" con "if block_given?", Ni siquiera tiene que hacer que el argumento "& block" sea explícito, y puede ser suficiente con "def arbitrary". Esta es la práctica común de Ruby. – molf
@Molf: Tienes toda la razón. – bltxd