Ruby:为什么卡住分配给常量的可变对象?

标签 ruby string rubocop

考虑一下 rubocop 报告的这个罪行

lib/awesomelib/aws.rb:6:10: C: Style/MutableConstant: Freeze mutable objects assigned to constants.
    IP = '34.111.241.111'
     ^^^^^^^^^^^^^^^^

我为什么要卡住这个 IP 地址?

最佳答案

您应该卡住分配给 IP 的值,因为您已将 IP 声明为常量。这表示您不希望分配给 IP 的值发生变化。

问题在于,在 ruby​​ 中,为常量赋值并不能使该值不可变。如果您改变分配给常量的值,您只会收到警告。要使值实际上不可变,您需要.freeze 分配给常量的值。卡住分配给常量的值后,如果您尝试更改该值,将会遇到运行时错误。

关于Ruby:为什么卡住分配给常量的可变对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046846/

相关文章:

javascript - 浏览器如何在 rails 中执行 AJAX 响应?

c - 为什么此代码不适用于 ruby​​ 1.9 但适用于 ruby​​ 1.8?

ruby - ruby 可以实现多重继承吗?

c - 字符串文字是否算作部分初始化器和零初始化?

java - 为输入的每个字符分配一个值并显示输入的值

ruby - 允许返回的 block 使用大括号

html - html类的双引号

由于 SSL 错误,RubyGems 在 Windows 7 上根本无法运行

将unicode字符串转换为C中对应的字符串

ruby - 如何用 MatchData 对象替换 Perl 风格的正则表达式