我有三个哈希值:
a = {key:"value"}
b = {"key"=>"value"}
c = {:key=>"value"}
这些结果:
a.has_key?("key") # => false
b.has_key?("key") # => true
c.has_key?("key") # => false
我的问题是:
- 为什么?这是什么行为?
- 我怎样才能得到
a
, b
and c
回来true
对所有这些都使用相同的语法?
有字符串,也有符号。字符串不是符号。
这些哈希值包含一个符号作为键:
{key: "value"}
{:key => "value"}
该哈希包含一个字符串作为键:
{"key"=>"value"}
这就是为什么你的测试表现得像他们那样。
Rails 有一个 Hash 包装器,称为具有无关访问的哈希 http://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html。如果您有其中之一,则可以通过字符串或符号访问值。但对于常规哈希来说,是有区别的。
require "active_support/core_ext"
h = {key: "value"}.with_indifferent_access
h.has_key?(:key) # => true
h.has_key?("key") # => true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)