Joe*_*erg 12 ruby string syntax symbols ruby-on-rails
当我执行以下操作时:
h = { "a": 123 }
Run Code Online (Sandbox Code Playgroud)
Ruby/Rails会自动将密钥转换为符号.
h[:a] # => 123
h["a"] # => nil
Run Code Online (Sandbox Code Playgroud)
我该如何防止这种行为?我用字符串键创建了哈希,并希望保持这种方式而不必总是调用Hash#stringify_keys.
And*_*eko 20
使用哈希火箭语法:
h = { "a" => 123 }
#=> {"a"=>123}
h['a']
#=> 123
Run Code Online (Sandbox Code Playgroud)
澄清一个误会:
当字符串键被修改为符号时,这是令人困惑/令人沮丧的
它一开始就不是一个字符串。这只是创建符号键的另一种语法。考虑:
:'foo-bar'.class # => Symbol
Run Code Online (Sandbox Code Playgroud)
这个想法是,有时,符号中的字符可能看起来完全不同。
例如,上面不带引号的意思是“创建文字符号:foo,并从中减去局部变量/方法调用结果的值bar”。以前,除了使用 之外,没有其他方法可以构造此类符号String#to_sym。你必须承认这看起来很糟糕:
{'foo-bar'.to_sym => 42, :this_now_needs_rocket_notation => 'baz'}
Run Code Online (Sandbox Code Playgroud)
一般来说,引号并不意味着字符串创建,它们意味着按原样使用和/或定义某些内容的边界。因此,它们对于文字字符串语法来说很有意义,但这并不是它们唯一的应用。
| 归档时间: |
|
| 查看次数: |
8078 次 |
| 最近记录: |