谁能解释为什么字符串会意外变异。我的导师就此进行了竞标,但我真的不明白为什么。
最佳答案
关于常量引用的对象如何发生变异的示例:
FOO = 'foo'
p FOO # => "foo"
FOO.upcase!
p FOO # => "FOO" (no errors)
BAR = 'bar'.freeze
p BAR # => "BAR"
BAR.upcase! # => freeze.rb:8:in `upcase!': can't modify frozen String (RuntimeError)
卡住
常量引用的对象可以防止代码的意外行为,因此开发人员可以修复它或其他任何东西。
要查看 freeze
仅卡住对象,请查看如果将新值分配给常量,则抛出的错误是不同的:
BAZ = 'baz'.freeze # => warning: previous definition of BAZ was here
BAZ = 'bazbaz' # => warning: already initialized constant BAZ
关于ruby - 我试图理解 Ruby 中的 .freeze 概念。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52175606/