class Hash(K, V)
- Hash(K, V)
- Reference
- Object
Overview
A Hash
represents a collection of key-value mappings, similar to a dictionary.
Main operations are storing a key-value mapping (#[]=
) and
querying the value associated to a key (#[]
). Key-value mappings can also be
deleted (#delete
).
Keys are unique within a hash. When adding a key-value mapping with a key that
is already in use, the old value will be forgotten.
# Create a new Hash for mapping String to Int32
hash = Hash(String, Int32).new
hash["one"] = 1
hash["two"] = 2
hash["one"] # => 1
Hash literals
can also be used to create a Hash
:
{"one" => 1, "two" => 2}
Implementation is based on an open hash table.
Two objects refer to the same hash key when their hash value (Object#hash
)
is identical and both objects are equal to each other (Object#==
).
Enumeration follows the order that the corresponding keys were inserted.
NOTE When using mutable data types as keys, changing the value of a key after
it was inserted into the Hash
may lead to undefined behaviour. This can be
restored by re-indexing the hash with #rehash
.
Included Modules
- Enumerable({K, V})
- Iterable({K, V})
Defined in:
ext/dig.crInstance Method Summary
-
#dig?(keys : Array(String))
Digs deeply into self until found the value by keys.
Instance Method Detail
Digs deeply into self until found the value by keys.
Returns nil if not found.
NOTE The keys argument MAY be modified with #shift
(you may #dup
or #clone
it before passing).
x = {"a" => "b", "c" => {"d" => "e"}} # Instance of Hash
x.dig?(["c", "d"]) # => "e"