我有这个哈希:
{
"title"=>"Navy to place breath-test machines on all its ships",
"url"=>"http://feeds.washingtonpost.com/click.phdo?i=a67626ca64a9f1766b8ba425b9482d49"
}
事实证明
hash[:url] == nil
和
hash['url'] == "http://feeds.washingtonpost.com/click.phdo?i=a67626ca64a9f1766b8ba425b9482d49"
为什么呢?它不应该兼有吗?
答案 0 :(得分:23)
由于符号与字符串不同:
:url == 'url' #=> false
作为哈希键,它们会有所不同。也许你在Rails中看到过这种行为? Ruby on Rails使用HashWithIndifferentAccess将内容映射到String,所以你可以这样做:
h = HashWithIndifferentAccess.new
h['url'] = 'http://www.google.com/'
h[:url] #=> 'http://www.google.com/'
答案 1 :(得分:4)
> :ruby == "ruby"
=> false
您可以使用to_s
和to_sym
> "ruby".to_sym
=> :ruby
> :ruby.to_s
=> "ruby"
答案 2 :(得分:2)
为什么?---因为:url
和'url'
不同,即:url != 'url'
。
它不应该兼容吗?---否。