Когда я сначала начал читать об и изучать рубин, я считал что-то о питании рубиновых символов по строкам: символы хранятся в памяти только однажды, в то время как строки хранятся в памяти однажды на строку, даже если они - то же.
Например: Направляющие params
Хеш в Контроллере имеет набор ключей как символы:
params[:id] or
params[:title]...
Но другие прилично размерные проекты, такие как Sinatra и Jekyll не делают этого:
Jekyll:
post.data["title"] or
post.data["tags"]...
Sinatra:
params["id"] or
params["title"]...
Это делает читающий новый код немного хитрым, и мешает передавать код вокруг и выяснять, почему использование символов не работает. Существует намного больше примеров этого, и это довольно сбивает с толку. Должны мы, или разве мы не должны использовать символы в этом случае? Каковы преимущества символов, и мы должны использовать их здесь?
В Ruby после создания AST каждый символ представляется как уникальное целое число. Использование символов в качестве хэш-ключей значительно ускоряет вычисления, поскольку основная операция - это сравнение.
Символы не собираются сборщиком мусора. AFAIK, так что, возможно, стоит остерегаться этого, но за исключением этого, они действительно хороши в качестве хеш-ключей.