Hash Rocket kullanımdan kaldırıldı mı?


99

İyi alıntılanmış RIP Hash roket postası , Hash Rocket sözdiziminin ( :foo => "bar"), Ruby'ye yeni JSON tarzı hash ( foo: "bar") lehine kullanımdan kaldırıldığını ima ediyor gibi görünüyor , ancak Hash Rocket formunu belirten kesin bir referans bulamıyorum aslında Ruby 1.9'dan itibaren kullanımdan kaldırılmış / tavsiye edilmemiştir.


Sanırım bu adam sadece Ruby ile Rails kullanıyor.
Niklas B.

Çok yaşa roket
HashRocketSyntax

Roket hala güçlü 🚀
mahemoff

Yanıtlar:


132

Bu blog post yazarı aşırı dramatik ve aptalca ediliyor, =>olduğu hala oldukça gerekli . Özellikle:

  1. Roketi, geçerli etiketler olmayan semboller için kullanmalısınız: :$set => xgeçerlidir, ancak $set: xdeğildir. Ruby 2.2+ ile bu problemi alıntılarla aşabilirsiniz: '$set': xDoğru Şey yapacaktır.

  2. Hash'larınızda dizeler, tamsayılar veya sabitler gibi sembol olmayan anahtarlar kullanıyorsanız roketi kullanmanız gerekir. Örneğin 's' => x, geçerlidir ancak 's': xtamamen farklı bir şeydir.

Elbette açık bir şekilde yukarıdakilerin etrafında dolaşabilirsiniz:

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

ama bu sadece çirkin ve gereksiz.

Roket, Ruby'nin Hash'larını sakatlamadan hiçbir yere gitmiyor.


6
aşırı dramatik ve aptalca / dramatik ve anlamlı bir saygı duruşuyla savunucu /. Puanlarınızın geri kalanı geçerli.
dbenhur

17
Belirli senaryolar için hala eski sözdizimine güvenmeniz gerektiğinde, yeni sözdizimini kullanmanın kodumuzu karmaşıklaştırıp karmaşıklaştırmayacağını merak etmelisiniz.
Dave Rapin

4
@DaveRapin: Bu yüzden roket dışı sözdizimi ile uğraşmıyorum. Biraz MongoDB çalışması yapıyorum ve sembol olmayanları Hash anahtarları olarak kullanıyorum ( h[:s]yaptığım her şeyi boşverin) bu yüzden JavaScript stili sözdizimi benim için anlamsız bir karmaşıklık. Bana kötü düşünülmüş bir gee-whiz fikri gibi görünüyor ve şimdi sonsuza dek buna ve ilgili kafa karışıklığına takılıp kaldık.
mu çok kısa

8
Düşünün @DaveRapin a = [0,1,4,9]VS. a = Array.new(4){ |i| i**2 }. Bazen ikincisini kullanmanız gerektiğinde neden ilkini kullanıyorsunuz? Cevap: çünkü daha uygun. TIMTOWTDI dili karmaşıklaştırıyor, ancak bu bir değiş tokuş. Lua, özünde gerçekten zariftir ve bu nedenle öğrenmesi kolaydır, ancak kodlamak gerçekten can sıkıcıdır. Ruby, öğrenmeyi zorlaştıran birçok özel duruma ve özel özelliğe sahiptir, ancak programlamayı bir zevktir. Biri için hoş geldiniz ortak durum için yazması daha basit, okunması daha kolay sembollü Hash-anahtar gösterimi.
Phrogz

7
Yazmak daha az eğlenceli olsa da, kesinlikle hash roketini tercih ederim. Neden? çünkü bir anahtar için bir sembolü her kullandığımda, iki nokta üst üste ile başlayan bir dizeyi arayarak projemin herhangi bir yerinde arayabileceğim anlamına gelir. Bana göre, anahtarı belirtmek için kullanılan gerçek karakterler arasındaki tutarlılık eksikliği my_hash = {a:1}ve myhash[:a] = 1en azından oldukça can sıkıcı. Eminim bu şekilde hisseden tek kişi ben değilim.
Huliax
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.