What is the difference between Ruby's Hash and ActiveSupport's HashWithIndifferentAccess?

What is the difference between Ruby's Hash and ActiveSupport's HashWithIndifferentAccess?



The Hash class in Ruby's core library retrieves values by doing a standard == comparison on the keys. This means that a value stored for a Symbol key (e.g. :my_value) cannot be retrieved using the equivalent String (e.g. 'my_value'). On the other hand, HashWithIndifferentAccess treats Symbol keys and String keys as equivalent so that the following would work:

h = HashWithIndifferentAccess.new
h[:my_value] = 'foo'
h['my_value'] #=> will return "foo"

Comments

Popular posts from this blog

What is JAD and how are users involved? What are advantages and disadvantages of JAD?

What are the three dimensions to business problems? Give an example of each.

A laboratory assistant prepared solution of 0.8 M, 0.6 M, 0.4 M, and 0.2 M sucrose, but forgot to label them. After realizing the error, the assistant randomly labeled the flasks containing these four unknown solutions as flask A, flask B, flask C, and flask D.