Hash 既支持 String key,又支持 Symbol key,而且会区别对待。以下形式是合法的
{:one => 1, "one" => 1}
但是更多的时候,我们在意的是组合成 key 的字符,不是他的形式。所以,也就是说实际应用的时候,我们一般不会在一个 hash 中包含两种类型的 key。那我们如何来避免这两种类型的 key 同时出现呢?下面推荐一个方法 http://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html
rgb = ActiveSupport::HashWithIndifferentAccess.new
rgb[:black] = '#000000'
rgb[:black] # => '#000000'
rgb['black'] # => '#000000'
rgb['white'] = '#FFFFFF'
rgb[:white] # => '#FFFFFF'
rgb['white'] # => '#FFFFFF'
对于 Hash object 我们也可以很好的通过 Hash#with_indifferent_access 来扩展,快捷,方便!