Ruby Constants 有没有办法拥有真正的常量..?
可能的重复:
在 Ruby 中重新分配常量时抛出异常?
当我们在 ruby 中使用大写字母单词时,它是一个常量:CONSTANT = "alive"
。当我修改这个“假定的”常量时,它会给出一个错误,但无论如何都会修改它:
(irb):27: warning已经初始化常量CONSTANT => “13”。
这似乎是一种奇怪的行为。如果我正在设计游戏并需要一个恒定的值,例如:Cheatcode_health = true
,并且意外地,该值被指定为 false
或 0< /code>,这将是一种不寻常的行为。可能会有很多影响。简而言之,Ruby 中有真正的常量吗?
Possible Duplicate:
Throw exception when re-assigning a constant in Ruby?
When we use a capital letter word in ruby, it is a constant: CONSTANT = "alive"
. When I modify this "supposed" constant, it gives an error, but modifies it anyway:
(irb):27: warning already initialized constant CONSTANT
.
=> "13"
This seems like an odd behavior. If I am designing a game and need a value to be constant, say: Cheatcode_health = true
, and by accident, the value gets assigned as false
or 0
, it would be an unusual behavior. There could be lot of implications. In short is there a true constant in Ruby?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Ruby 是一种非常宽容的语言。如果重新分配常量,则无法引发错误。
唯一的解决方法是创建一个自定义方法来为常量赋值,并让该方法为您进行检查。
其他相关问题:
Ruby is a very permissive language. There's no way to raise an error if you re-assign a constant.
The only workaround is to create a custom method to assign values to constants and have this method do the check for you.
Other related questions: