Dobrze cytowany post dotyczący rakiety RIP Hash wydaje się sugerować, że składnia Hash Rocket ( :foo => "bar"
) jest przestarzała na rzecz nowego skrótu w stylu JSON w Ruby ( foo: "bar"
), ale nie mogę znaleźć żadnego ostatecznego odniesienia określającego formę Hash Rocket jest faktycznie przestarzałe / niezalecane od wersji 1.9 Rubiego.
99
Odpowiedzi:
Autorka tego blogu jest bycie przesadnie dramatyczny i głupi,
=>
jest nadal dość konieczne . W szczególności::'where.is' => x
jest ważny, ale'where.is': x
nie jest. Ruby 2.2 naprawił ten problem, więc możesz powiedzieć'where.is': x
w Rubim 2.2+.:$set => x
jest ważna, ale$set: x
nie jest. W Rubim 2.2+ możesz ominąć ten problem za pomocą cudzysłowów:'$set': x
zrobi właściwą rzecz.'s' => x
jest ważna, ale's': x
jest czymś zupełnie innym.Oczywiście możesz omijać powyższe w oczywisty sposób:
ale to po prostu brzydkie i niepotrzebne.
Rakieta nigdzie nie leci bez okaleczenia Hashes Ruby.
źródło
h[:s]
co robię), więc składnia w stylu JavaScript jest dla mnie po prostu bezcelową komplikacją. Wydaje mi się, że to słabo przemyślany pomysł, ale teraz utknęliśmy z tym i związanym z tym zamieszaniem na zawsze.a = [0,1,4,9]
Vs.a = Array.new(4){ |i| i**2 }
. Po co używać pierwszego, skoro czasami trzeba używać drugiego? Odpowiedź: ponieważ jest to wygodniejsze. TIMTOWTDI komplikuje język, ale jest to kompromis. Lua jest naprawdę elegancki w swej istocie i dlatego jest łatwy do nauczenia, ale irytujący w rzeczywistości kodowanie. Ruby ma wiele specjalnych przypadków i niestandardowych funkcji, które utrudniają naukę, ale przyjemność z programowania. Witam prostsza do wpisania, łatwiejsza do odczytania notacja Hash-with-Symbol-keys dla typowego przypadku.my_hash = {a:1}
imyhash[:a] = 1
to, co najmniej, raczej denerwujące. Jestem pewien, że nie tylko ja się tak czuję.