原始代码如下所示:
module Acme
class Address
STREET_NAME = "123 acme inc drive".freeze
..
..
end
end
这是第 3 方的 gem,我希望我可以以某种方式修改初始化程序中的 STREET_NAME
变量,而不必编辑源代码。这可能吗?
最佳答案
只需重新分配它:
Acme::Address::STREET_NAME = "1 Infinite Loop"
卡住对象只会卡住:对象,而不是变量(引用)本身。重新分配一个常量会给你一个警告:
warning: already initialized constant
STREET_NAME
因为重新分配常量通常不是一个好主意——但这是 Ruby,并且由于一切都是动态的,所以常量并不是真正的常量。在初始化程序中执行此操作应该可以正常工作。
关于ruby-on-rails - 我如何覆盖这个 Ruby 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270056/