Le altre risposte sono corrette. C'era qualche speculazione riguardo la logica alla base di questa nuova sintassi. Questo cambiamento può avere qualcosa a che fare con il modo in cui Javascript e forse altri linguaggi gestiscono la notazione letterale dell'oggetto. Forse è stato sentito il bisogno di portare il rubino più in linea con il modo in cui questi linguaggi gestiscono la creazione di oggetti.
Per esempio, in JavaScript, che possiamo fare:
var person = {
name: "John",
age: 42,
married: false
}
Quindi, in realtà, quando stiamo passando factory: :user
, quello che stiamo facendo veramente sta passando {factory: :user}
, scritto anche come {:factory => :user}
. La sintassi 1.9 ha lo scopo di rendere più facile fare qualcosa come {factory: "user"}
fonte
2014-06-20 15:57:31
Si noti che la sintassi non-hashrocket è stata aggiunta in Ruby 1.9 e non esiste nelle versioni precedenti. –
Quindi, in questo contesto, ':' è '=>'? – Roman
Sì, è solo un nuovo modo di scrivere Hash introdotto in Ruby 1.9, probabilmente perché è leggermente più conciso della sintassi =>. – OzBandit