O bem citado post de RIP Hash rocket parece implicar que a sintaxe Hash Rocket ( :foo => "bar"
) está obsoleta em favor do hash do estilo JSON Ruby ( foo: "bar"
), mas não consigo encontrar nenhuma referência definitiva declarando a forma Hash Rocket está obsoleto / desaconselhado a partir do Ruby 1.9.
99
Respostas:
O autor daquela postagem do blog está sendo excessivamente dramático e tolo, isso ainda
=>
é bastante necessário . Em particular::'where.is' => x
é válido, mas'where.is': x
não é. Ruby 2.2 corrigiu esse problema, então você pode dizer'where.is': x
em Ruby 2.2+.:$set => x
é válido, mas$set: x
não é. No Ruby 2.2+ você pode contornar este problema com aspas:'$set': x
fará a coisa certa.'s' => x
é válido, mas's': x
é algo completamente diferente.Você pode confundir o acima da maneira óbvia, é claro:
mas isso é simplesmente feio e desnecessário.
O foguete não vai a lugar nenhum sem prejudicar os Hashes de Ruby.
fonte
h[:s]
eu faço), então a sintaxe do estilo JavaScript é apenas uma complicação inútil para mim. Para mim, parece uma ideia malfeita, e agora estamos presos a ela e à confusão relacionada para sempre.a = [0,1,4,9]
vsa = Array.new(4){ |i| i**2 }
.. Por que usar o primeiro quando às vezes você precisa usar o último? Resposta: porque é mais conveniente. TIMTOWTDI complica a linguagem, mas isso é uma troca. Lua é realmente elegante no núcleo e, portanto, fácil de aprender, mas irritante para codificar. Ruby tem muitos casos especiais e recursos personalizados que tornam mais difícil aprender, mas é uma alegria programar. Eu, por exemplo, bem-vindo a notação Hash-with-symbol-keys mais simples de digitar e mais fácil de ler para o caso comum.my_hash = {a:1}
emyhash[:a] = 1
é, pelo menos, bastante irritante. Tenho certeza de que não sou o único que se sente assim.