2012-04-04 27 views
88

İyi atıfta bulunulan RIP Hash rocket post, Hash Rocket sözdiziminin (:foo => "bar") yeni Yakut JSON stili karması (foo: "bar") lehine reddedildiğini ima ediyor gibi görünüyor, ancak Hash Roket'i belirten kesin bir başvuru bulamıyorum Form, Ruby 1.9'dan itibaren gerçekten kullanılmaz/geliştirilmemiştir.Hash Rocket kullanımdan kaldırıldı mı?

+0

Bence bu adam sadece Ruby with Rails kullanıyor. –

cevap

119

o blog yayınına yazarı =>stillquitenecessary olduğunu aşırı dramatik ve aptalca davranıyor. Özellikle:

  1. Sen alıntı gerektiren semboller için roket kullanmalıdır: :'where.is' => x geçerli ancak değil. Ruby 2.2 bu sorunu düzeltti, böylece Ruby 2.2 + 'da deyin.
  2. Geçerli etiket olmayan simgeler için roketi kullanmalısınız: :$set => x geçerlidir, ancak $set: x değil. Ruby 2.2 + 'da bu soruna geçici bir çözüm bulabilirsin: '$set': x The Right Thing.
  3. Semboller olmayan Hash'leriniz içinde anahtar kullanırsanız, roketi kullanmalısınız: 's' => x geçerli ancak 's': x tamamen farklı bir şeydir.

Elbette bariz bir şekilde yukarıdaki etrafında kludge edebilirsiniz:

h = { } 
h[:'where.is'] = 'pancakes house?' 
# etc. 

ama bu sadece çirkin ve gereksiz.

Roket, Ruby's Hashes'i rahatsız etmeden hiçbir yere gitmiyor.

+4

s/aşırı dramatik ve aptal/dramatik ve savunucu bir sefalet ile. Geri kalan puanlar geçerli. – dbenhur

+0

Katılıyorum, kesinlikle bir dil güncellemesiyle ilgili en uygun mesajlardan biri. Biraz yanıltıcı olsa da: D. – mahemoff

+13

Yeni sentaksı kullanmanın, bazı senaryolar için hala eski sözdizimine güvenmeniz gerektiğinde, kodumuzu karmaşık hale getirip getirmeyeceğini merak etmeniz gerekir. –