and - proc ruby
Cómo almacenar bloques de código rubí (1)
Quiero almacenar un "bloque de código" en una variable para ser reutilizada, algo como:
block = do
|test| puts test
end
3.upto(8) block
¿Puede alguien mostrarme lo que estoy haciendo tan obviamente mal? (O si es simplemente imposible)
Hay muchas maneras de hacer esto en Ruby, una de las cuales es usar un Proc:
foo=Proc.new do |test|
puts test
end
3.upto(8) { foo.call("hello world") }
Lea más sobre Procs:
- http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas
- http://www.skorks.com/2010/05/ruby-procs-and-lambdas-and-the-difference-between-them/
Actualización, el método anterior podría reescribirse como sigue:
# using lower-case **proc** syntax, all on one line
foo = proc { |test| puts test }
3.upto(8) { foo.call("hello world") }
# using lambda, just switch the method name from proc to lambda
bar = lambda { |test| puts test }
3.upto(8) { bar.call("hello world") }
Son básicamente métodos muy similares, con diferencias sutiles.
Y, finalmente, probablemente haya formas más elegantes de hacer lo que he descrito, sea bueno saber de alguien que tenga una mejor manera. Espero que esto ayude.