Почему больше проектов не использует Символы Ruby вместо Строк?

Когда я сначала начал читать об и изучать рубин, я считал что-то о питании рубиновых символов по строкам: символы хранятся в памяти только однажды, в то время как строки хранятся в памяти однажды на строку, даже если они - то же.

Например: Направляющие params Хеш в Контроллере имеет набор ключей как символы:

params[:id] or
params[:title]...

Но другие прилично размерные проекты, такие как Sinatra и Jekyll не делают этого:

Jekyll:

post.data["title"] or
post.data["tags"]...

Sinatra:

params["id"] or
params["title"]...

Это делает читающий новый код немного хитрым, и мешает передавать код вокруг и выяснять, почему использование символов не работает. Существует намного больше примеров этого, и это довольно сбивает с толку. Должны мы, или разве мы не должны использовать символы в этом случае? Каковы преимущества символов, и мы должны использовать их здесь?

11
задан Lance Pollard 10 March 2010 в 09:34
поделиться

2 ответа

В Ruby после создания AST каждый символ представляется как уникальное целое число. Использование символов в качестве хэш-ключей значительно ускоряет вычисления, поскольку основная операция - это сравнение.

4
ответ дан 3 December 2019 в 11:03
поделиться

Символы не собираются сборщиком мусора. AFAIK, так что, возможно, стоит остерегаться этого, но за исключением этого, они действительно хороши в качестве хеш-ключей.

4
ответ дан 3 December 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: