Мы можем легко найти такой стиль из множества известных репозиториев, таких как стойки, рельсы и т.д.
PATH_INFO = 'PATH_INFO'.freeze
REQUEST_METHOD = 'REQUEST_METHOD'.freeze
SCRIPT_NAME = 'SCRIPT_NAME'.freeze
QUERY_STRING = 'QUERY_STRING'.freeze
CACHE_CONTROL = 'Cache-Control'.freeze
CONTENT_LENGTH = 'Content-Length'.freeze
CONTENT_TYPE = 'Content-Type'.freeze
HTTP_IF_MODIFIED_SINCE = 'HTTP_IF_MODIFIED_SINCE'.freeze
HTTP_IF_NONE_MATCH = 'HTTP_IF_NONE_MATCH'.freeze
HTTP_IF_NONE_MATCH = 'HTTP_IF_NONE_MATCH'.freeze
Интересно, почему эти постоянные строки заморожены. Поскольку все они являются константами, должен быть только один экземпляр. Конечно, мы можем помещать "foo".freeze
где-то, чтобы ссылаться на один и тот же экземпляр singleton, однако люди обычно пишут буквальное имя переменной, например HTTP_IF_MODIFIED_SINCE
.
Поэтому, на мой взгляд, это не имеет никакого значения, несмотря на использование #freeze
, так почему люди замораживают константы?