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 решили добавить. В целом, когда привыкаешь, в самом деле удобно, а хеши используются очень часто, поэтому добавка вполне оправданная.