objects - ruby>=
Sintaxis para poner un bloque en una sola lĂnea (3)
Necesitas poner en paréntesis tu argumento:
something(''hello'') { do_it }
Eso debería funcionar.
Así que tengo un método Ruby como este:
def something(variable, &block)
....
end
Y quiero llamarlo así:
something ''hello'' { do_it }
Excepto que eso no funciona para mí, obtengo un error de sintaxis. Si hago esto, funciona:
something ''hello'' do
do_it
end
Excepto que me extraña el aspecto agradable de estar en una línea.
Puedo ver por qué sucede esto, ya que podría parecer que se pasa un hash como una segunda variable, pero sin una coma entre las variables ... pero supongo que debe haber una forma de lidiar con esto que yo '' me falta ¿Esta ahí?
Si quiere "def def algo" para aceptar un bloque, necesita ceder datos a ese bloque. Por ejemplo:
#to uppercase string
def something(my_input)
yield my_input.upcase
end
# => "HELLO WORLD"
something("hello world") { |i| puts i}
Uh, ¿qué hay de:
>> def something(arg1 , &block)
>> yield block
>> end
=> nil
>> def do_it
>> puts "Doing it!"
>> end
=> nil
>> something(''hello'') { do_it }
"Doing it!"
=> nil