原始代码如下所示:
module Acme
class Address
STREET_NAME = "123 acme inc drive".freeze
..
..
end
end
这是第三方gem,我希望我能以某种方式修改初始化程序中的STREET_NAME
变量,而无需编辑源代码。这可能吗?
答案 0 :(得分:9)
重新分配它:
Acme::Address::STREET_NAME = "1 Infinite Loop"
冻结对象只会冻结:对象,而不是变量(引用)本身。重新分配一个常量会给你一个警告:
警告:已初始化常量
STREET_NAME
因为重新分配一个常量通常不是一个好主意 - 但这是Ruby,因为一切都是动态的,所以常量并不是真的。在初始化程序中执行此操作应该可以正常工作。