significa que metodos funciones ejemplos def clases ruby parentheses

metodos - Bloque de Ruby y argumentos sin apariencia



que significa en ruby (1)

Extraje un simple ejemplo:

require ''pp'' x = 1..3 pp x.map do |i| {:value => i, :double => (i*2)} end pp x.map { |i| {:value => i, :double => (i*2)} } pp(x.map do |i| {:value => i, :double => (i*2)} end) pp(x.map { |i| {:value => i, :double => (i*2)} })

Me pregunto por qué el primer pp produce:

[1, 2, 3]

Mientras todos los oders están dando:

[{:value=>1, :double=>2}, {:value=>2, :double=>4}, {:value=>3, :double=>6}]

Supongo que tiene algo que ver con la precedencia del operador. ¿Dónde puedo encontrar una buena explicación?


Es porque estás llamando

pp x.map

y pasar un bloque a pp (que lo ignora)

Como se explica en el libro Programming Ruby

Las llaves tienen una alta precedencia; do tiene una baja precedencia

Entonces, efectivamente, las llaves se relacionan con la llamada de función más cercana (x.map) mientras que se une a la más lejana (pp). Eso es un poco simplista, pero debería explicar esta situación