İ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ı?
cevap
o blog yayınına yazarı =>
stillquitenecessary olduğunu aşırı dramatik ve aptalca davranıyor. Özellikle:
- 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. - 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. - 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.
s/aşırı dramatik ve aptal/dramatik ve savunucu bir sefalet ile. Geri kalan puanlar geçerli. – dbenhur
Katılıyorum, kesinlikle bir dil güncellemesiyle ilgili en uygun mesajlardan biri. Biraz yanıltıcı olsa da: D. – mahemoff
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. –
Bence bu adam sadece Ruby with Rails kullanıyor. –