В этом смысле у Ruby нет «таблицы символов». У него есть привязки и символы (то, что Лисперс называет атомами ), но на самом деле это не так, как описано в статье.
Итак, в ответ на ваш вопрос: дело не в том, что ruby выполняет одно и то же по-разному, а в том, что он делает две разные вещи (:xxx
запись -> уникальные идентификаторы и привязки в областях) и использует похожая / перекрывающаяся терминология для них.
Для уточнения:
Статья, на которую вы ссылаетесь, дает обычное определение таблицы символов, то есть
, где каждый идентификатор в исходном коде программы связан с информацией, относящейся к ее объявлению или появлению в источнике, такой как его тип, уровень области действия и иногда его местоположение
Но это не то, что делает таблица символов ruby. Он просто предоставляет глобально уникальную идентификацию для определенного класса объектов, который может быть записан как :something
в исходном коде, включая такие вещи, как :+
и :"Hi bob!"
, которые не являются идентификаторами. Кроме того, простое использование идентификатора не создаст соответствующий символ. И, наконец, никакая информация, перечисленная в приведенном выше отрывке, не сохраняется в списке символов ruby.
Это совпадение имен, и чтение этой статьи не поможет вам понять символы рубина.