Il ben citato RIP Hash rocket post sembrerebbe implicare la sintassi di Hash Rocket (:foo => "bar"
) è deprecato in favore dell'hash in stile JSON new-to-Ruby (foo: "bar"
), ma non riesco a trovare alcun riferimento definitivo che indichi l'Hash Rocket il modulo è in realtà deprecato/sconsigliato a partire da Ruby 1.9.Hash Rocket è deprecato?
risposta
L'autore di quel post è troppo drammatico e folle, lo =>
è stillquitenecessary. In particolare:
- È necessario utilizzare il razzo per i simboli che richiedono citando:
:'where.is' => x
è valido, ma non è . Ruby 2.2 ha risolto questo problema, quindi puoi dire in Ruby 2.2+. - È necessario utilizzare il razzo per i simboli che non sono etichette valide:
:$set => x
è valido ma non lo è$set: x
. In Ruby 2.2+ è possibile aggirare questo problema con le virgolette:'$set': x
farà The Right Thing. - È necessario utilizzare il razzo se si utilizzano chiavi negli hash che non sono simboli:
's' => x
è valido ma's': x
è qualcosa di completamente diverso.
È possibile kludge tutto il sopra nella maniera ovvia, naturalmente:
h = { }
h[:'where.is'] = 'pancakes house?'
# etc.
ma questo è solo brutta e inutile.
Il razzo non sta andando da nessuna parte senza aver rovinato gli Hash di Ruby.
s/eccessivamente drammatico e folle/drammatico e advocational con un omaggio eloquente /. Il resto dei tuoi punti sta in piedi. – dbenhur
Sono d'accordo, è sicuramente uno dei post più eloquenti su un aggiornamento di lingua. Anche se un po 'fuorviante: D. – mahemoff
Ci si deve chiedere se l'uso della nuova sintassi, quando si deve ancora fare affidamento sulla vecchia sintassi per determinati scenari, complicherà semplicemente il nostro codice. –
- 1. Qual è la differenza tra Docker e Rocket di CoreOS?
- 2. Rails 4 validate unicità con portata hash deprecato
- 3. 'sharedDispatcher' è deprecato
- 4. Perché isJavaLetterOrDigit è deprecato?
- 5. Android: showAsAction è deprecato?
- 6. UITextAttributeTextShadowOffset è deprecato
- 7. Hibernate è deprecato?
- 8. auto_ptr è deprecato?
- 9. ActivityGroup è deprecato
- 10. UILineBreakModeWordWrap è deprecato
- 11. presentModalViewController: animato è deprecato
- 12. Perché context2d.backingStorePixelRatio è deprecato?
- 13. perché absolutelayout è deprecato?
- 14. java.util.Timer: è deprecato?
- 15. Livequery è deprecato
- 16. L'MFC è deprecato?
- 17. Perché/Wp64 è deprecato?
- 18. `route.transitionTo` è deprecato?
- 19. android.support.v7.app.ActionBarActivity è deprecato
- 20. Perché GenFsm è deprecato?
- 21. getResources(). GetColor() è deprecato
- 22. $ HADOOP_HOME è deprecato
- 23. ActiveRecord :: Migrator.proper_table_name è deprecato
- 24. Perché body.scrollTop è deprecato?
- 25. Perché auto_ptr è deprecato?
- 26. setTabSFromPagerAdapter è deprecato
- 27. È davvero deprecato window.navigator.userAgent?
- 28. SMSManager è deprecato
- 29. pulsante setTextAppearance è deprecato
- 30. org.hibernate.dialect.PostgreSQLDialect è deprecato
Penso che quel tizio usi solo Ruby con Rails. –