Las otras respuestas son correctas. Hubo algunas especulaciones con respecto a la razón de ser de esta nueva sintaxis. Este cambio puede tener algo que ver con cómo Javascript y quizás otros lenguajes manejan la notación literal del objeto. Se sintió la necesidad, tal vez, de poner Ruby más en línea con la forma en que estos lenguajes manejan la creación de objetos.
Por ejemplo, en JavaScript, que podemos hacer:
var person = {
name: "John",
age: 42,
married: false
}
Así que en realidad, cuando estamos pasando factory: :user
, lo que realmente estamos haciendo es pasar {factory: :user}
, también escrito como {:factory => :user}
. La sintaxis 1.9 tiene como objetivo facilitar la realización de algo como {factory: "user"}
Tenga en cuenta que la sintaxis sin hashrocket se agregó en Ruby 1.9 y no existe en versiones anteriores. –
Entonces, en este contexto, ':' es '=>'? – Roman
Sí, es solo una nueva forma de escribir Hashes que se introdujo en Ruby 1.9, posiblemente porque es un poco más conciso que la => sintaxis. – OzBandit