ame*_*ior 11 ruby string rubocop
考虑一下rubocop报告的这种攻击
lib/awesomelib/aws.rb:6:10: C: Style/MutableConstant: Freeze mutable objects assigned to constants.
IP = '34.111.241.111'
^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
我为什么要冻结这个IP地址?
Jör*_*tag 15
冻结对象意味着您不再允许变异.常量意味着您不再允许变更绑定.(好吧,如果你改变绑定,你会得到一个警告.)两者只是很好地结合在一起.
特别是,分配给不可变绑定的可变对象仍然可以变异的事实可能会使某些人感到困惑.只是见证Stack Overflow上有关它的各种问题:
IP = '34.111.241.111'
# Dis is a constant, I can never change it, amirite?
IP << '.255'
IP
#=> '34.111.241.111.255'
# Ooops!
IP.freeze
IP << '.255'
# RuntimeError: can't modify frozen String
Run Code Online (Sandbox Code Playgroud)
jk_*_*jk_ 14
您应该冻结分配给的值,IP
因为您已声明IP
为常量.这表示您不希望IP
突变分配的值.
问题是在ruby中,为常量赋值不会使值不可变.如果改变分配给常量的值,则会收到警告.要使值实际不可变,需要.freeze
赋值给常量.冻结分配给常量的值后,如果尝试更改该值,则会遇到运行时错误.
归档时间: |
|
查看次数: |
5867 次 |
最近记录: |