在Ruby中重新分配常量时抛出异常?

Ben*_*kes 5 ruby exception constants

我早就意识到Ruby中的"常量"(即大写的变量名)并不是真正的常量.与其他编程语言一样,对象的引用是存储在变量/常量中的唯一内容.(补充工具栏:Ruby确实可以"冻结"被引用的对象被修改,据我所知,这不是许多其他语言提供的能力.)

所以这是我的问题:当你将一个值重新分配给一个常量时,你会得到一个警告:

>> FOO = 'bar'
=> "bar"
>> FOO = 'baz'
(irb):2: warning: already initialized constant FOO
=> "baz"
Run Code Online (Sandbox Code Playgroud)

有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配.

ave*_*ell 5

看看你能问ruby将警告视为错误吗?了解在某些情况下如何将警告视为错误.

否则,我猜你必须编写一个自定义方法来分配常量,并在已经分配的情况下引发异常.

如果您知道特定常量的重新分配,您还可以在分配之前添加一个完整性检查.