I extrajeron ejemplo simple:Rubí bloque y unparenthesized argumentos
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é primera pp produce:
[1, 2, 3]
Mientras que todos los oders están dando:
[{:value=>1, :double=>2}, {:value=>2, :double=>4}, {:value=>3, :double=>6}]
I asumir que tiene algo que ver con la precedencia del operador. ¿Dónde puedo encontrar una buena explicación?
Esto es un duplicado de [Ruby Block Syntax Error] (http://StackOverflow.Com/q/6854283/), [El bloque de código pasado a 'each' funciona con corchetes pero no con 'do' -'end' (ruby)] (http://StackOverflow.Com/q/6718340/), [Definición de bloque - diferencia entre llaves y' do' -'end'?] (http://StackOverflow.Com/q/6179442/), [Ruby multiline block sin 'do'' end'] (http://StackOverflow.Com/q/3680097/), [Usando 'do' block vs brackets' {} ' ] (http://StackOverflow.Com/q/2122380/) y [¿Cuál es la diferencia o el valor de estos estilos de codificación de bloque en Ruby?] (http://StackOverflow.Com/q/533008/). –
Partes de una sesión de palanca que usa Ruby-2.2.0 en esta fecha de publicación. pp_hash = x.map do | i | {: value => i,: double => (i * 2)} end => [{: value => 1,: double => 2}, {: value => 2,: double => 4} , {: value => 3,: double => 6}] pp_hash.join (",") "{: value => 1,: double => 2}, {: value => 2,: double => 4}, {: value => 3,: double => 6} " que es probablemente más deseable en los usos actuales de Json pero eso es una cuestión de estilo solo para la lectura de la salida. A veces, no importa cuál va a pasar, siempre y cuando su código pueda manejar el tipo correcto. pp_hash = pp_hash.join (",") –
Esto es lo que realmente obtuve antes de salir en una tangente. Esta es la primera parte de la palanca ... [53] palanca (principal)> pp x.map do | i | {: key => i,: value => (i * 2)} end # => # –