Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 2 KB

ruby-chem-otlichaetsya-sym-ot-sym-pro-simvoly-i-heshi.md

File metadata and controls

35 lines (24 loc) · 2 KB

Ruby: Чем отличается sym: от :sym? (про символы и хэши)

sym: — эта запись бесполезна в отрыве от литерала хэша (строчки, которую вы пишете для создания хэша):

hash = {sum: 'some string'}
hash = {:sum => 'some string'}

Вот эти две записи абсолютно эквивалентны. Они обе создадут хэш, в котором будет одна пара ключ-значение, ключем будет символ :sum, а значением — строка 'some string'. Но при этом если Вы попробуете просто написать:

symbol = sum:

Получите ошибку:

syntax error, unexpected ':', expecting end-of-input

Так что двоеточие после названия ключа — это просто другой способ создать ключ-символ при объявлении хэша, если же вам нужен ключ-строка, то такая запись невозможна. Возможна только такая.

hash = {'sum' => 'some string'}

Лучший способ почитать про хэши — в документации: https://ruby-doc.org/core/Hash.html

my_hash = {my_key: 'my value'}

Кстати, такая особенная записи хеша, которая существует как бы в отрыве от всех других частей языка, создана в угоду моде на JavaScript — именно там хеши записываются подобным образом, ну и в Ruby решили добавить. В целом, когда привыкаешь, в самом деле удобно, а хеши используются очень часто, поэтому добавка вполне оправданная.