我们可以很容易地找到许多著名存储库这样的风格,像架,导轨等为什么到处冻结常量?
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
放在某个地方引用同一个单例实例,但是人们通常会编写文字变量名称,如HTTP_IF_MODIFIED_SINCE
。
所以在我看来,尽管使用了#freeze
,但它并没有什么区别,所以人们为什么要冻结常量?
阻止人们意外突变呢? –