Class: Hash

Inherits:
NSMutableDictionary show all
Includes:
Enumerable

Instance Method Summary (collapse)

Methods included from Enumerable

#_count, #all?, #any?, #collect, #collect_concat, #count, #cycle, #detect, #drop, #drop_while, #each_cons, #each_entry, #each_slice, #each_with_index, #each_with_object, #entries, #find, #find_all, #find_index, #first, #flat_map, #grep, #group_by, #inject, #map, #max, #max_by, #min, #min_by, #minmax, #minmax_by, #none?, #one?, #partition, #reduce, #reverse_each, #sort, #sort_by, #take, #take_while, #zip

Methods inherited from NSMutableDictionary

#addEntriesFromDictionary:, dictionaryWithCapacity:, dictionaryWithSharedKeySet:, #initWithCapacity:, #removeAllObjects, #removeObjectForKey:, #removeObjectsForKeys:, #setDictionary:, #setObject:forKey:, #setObject:forKeyedSubscript:, #setValue:forKey:

Methods inherited from NSDictionary

#allKeys, #allKeysForObject:, #allValues, #count, #description, #descriptionInStringsFileFormat, #descriptionWithLocale:, #descriptionWithLocale:indent:, dictionary, dictionaryWithContentsOfFile:, dictionaryWithContentsOfURL:, dictionaryWithDictionary:, dictionaryWithObject:forKey:, dictionaryWithObjects:forKeys:, dictionaryWithObjects:forKeys:count:, dictionaryWithObjectsAndKeys:, #enumerateKeysAndObjectsUsingBlock:, #enumerateKeysAndObjectsWithOptions:usingBlock:, #fileCreationDate, #fileExtensionHidden, #fileGroupOwnerAccountID, #fileGroupOwnerAccountName, #fileHFSCreatorCode, #fileHFSTypeCode, #fileIsAppendOnly, #fileIsImmutable, #fileModificationDate, #fileOwnerAccountID, #fileOwnerAccountName, #filePosixPermissions, #fileSize, #fileSystemFileNumber, #fileSystemNumber, #fileType, #getObjects:andKeys:, #initWithContentsOfFile:, #initWithContentsOfURL:, #initWithDictionary:, #initWithDictionary:copyItems:, #initWithObjects:forKeys:, #initWithObjects:forKeys:count:, #initWithObjectsAndKeys:, #isEqualToDictionary:, #keyEnumerator, #keysOfEntriesPassingTest:, #keysOfEntriesWithOptions:passingTest:, #keysSortedByValueUsingComparator:, #keysSortedByValueUsingSelector:, #keysSortedByValueWithOptions:usingComparator:, #objectEnumerator, #objectForKey:, #objectForKeyedSubscript:, #objectsForKeys:notFoundMarker:, sharedKeySetForKeys:, #valueForKey:, #writeToFile:atomically:, #writeToURL:atomically:

Methods inherited from NSObject

#!, #!=, #!~, #, #===, #=~, #Rational, #__callee__, #__method__, #__send__, #__type__, `, alloc, allocWithZone:, #autoContentAccessingProxy, autoload, autoload?, autorelease_pool, #awakeAfterUsingCoder:, binding, block_given?, caller, cancelPreviousPerformRequestsWithTarget:, cancelPreviousPerformRequestsWithTarget:selector:object:, catch, class, classFallbacksForKeyedArchiver, #classForCoder, #classForKeyedArchiver, classForKeyedUnarchiver, #clone, conformsToProtocol:, #copy, copyWithZone:, #dealloc, #define_singleton_method, description, display, #doesNotRecognizeSelector:, #enum_for, #equal?, #extend, fail, #finalize, format, #forwardInvocation:, #forwardingTargetForSelector:, framework, #freeze, #frozen?, getpass, gets, global_variables, #init, initialize, #initialize_clone, #initialize_copy, #initialize_dup, instanceMethodForSelector:, instanceMethodSignatureForSelector:, #instance_eval, #instance_exec, #instance_of?, #instance_variable_defined?, #instance_variable_get, #instance_variable_set, #instance_variables, instancesRespondToSelector:, isSubclassOfClass:, #is_a?, iterator?, #kind_of?, lambda, load, load_bridge_support_file, load_plist, local_variables, loop, #method, #methodForSelector:, #methodSignatureForSelector:, #methods, #mutableCopy, mutableCopyWithZone:, new, #nil?, open, p, #performSelector:onThread:withObject:waitUntilDone:, #performSelector:onThread:withObject:waitUntilDone:modes:, #performSelector:withObject:afterDelay:, #performSelector:withObject:afterDelay:inModes:, #performSelectorInBackground:withObject:, #performSelectorOnMainThread:withObject:waitUntilDone:, #performSelectorOnMainThread:withObject:waitUntilDone:modes:, print, printf, #private_methods, proc, #protected_methods, #public_method, #public_methods, #public_send, putc, puts, raise, rand, readline, readlines, #replacementObjectForCoder:, #replacementObjectForKeyedArchiver:, require, resolveClassMethod:, resolveInstanceMethod:, #respond_to?, #respond_to_missing?, select, #send, setVersion:, #singleton_methods, sprintf, srand, superclass, #taint, #tainted?, #tap, test, throw, #to_plist, trace_var, trap, #trust, #untaint, untrace_var, #untrust, #untrusted?, version

Constructor Details

This class inherits a constructor from NSObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class NSObject

Instance Method Details

- (Boolean) ==(other_hash)

Equality---Two hashes are equal if they each contain the same number of keys and if each key-value pair is equal to (according to Object#==) the corresponding elements in the other hash.

h1 = { "a" => 1, "c" => 2 }
h2 = { 7 => 35, "c" => 2, "a" => 1 }
h3 = { "a" => 1, "c" => 2, 7 => 35 }
h4 = { "a" => 1, "d" => 2, "f" => 35 }
h1 == h2   #=> false
h2 == h3   #=> true
h3 == h4   #=> false

Returns:

  • (Boolean)

- (Hash) [](key, value, ...) - (Hash) []([ [key, value)) - (Hash) [](object)

Creates a new hash populated with the given objects. Equivalent to the literal { key => value, ... }. In the first form, keys and values occur in pairs, so there must be an even number of arguments. The second and third form take a single argument which is either an array of key-value pairs or an object convertible to a hash.

Hash["a", 100, "b", 200]             #=> {"a"=>100, "b"=>200}
Hash[ [ ["a", 100], ["b", 200] ] ]   #=> {"a"=>100, "b"=>200}
Hash["a" => 100, "b" => 200]         #=> {"a"=>100, "b"=>200}

Overloads:

  • - []

    Returns:

  • - []

    Returns:

  • - []

    Returns:

- (Object) []=(key) - (Object) store(key, value)

Element Assignment---Associates the value given by value with the key given by key. key should not have its value changed while it is in use as a key (a String passed as a key will be duplicated and frozen).

h = { "a" => 100, "b" => 200 }
h["a"] = 9
h["c"] = 4
h   #=> {"a"=>9, "b"=>200, "c"=>4}

- (Array?) assoc(obj)

Searches through the hash comparing obj with the key using ==. Returns the key-value pair (two elements array) or nil if no match is found. See Array#assoc.

h = {"colors"  => ["red", "blue", "green"],
     "letters" => ["a", "b", "c" ]}
h.assoc("letters")  #=> ["letters", ["a", "b", "c"]]
h.assoc("foo")      #=> nil

Returns:

- (Hash) clear

Removes all key-value pairs from hsh.

h = { "a" => 100, "b" => 200 }   #=> {"a"=>100, "b"=>200}
h.clear                          #=> {}

Returns:

- (Hash) compare_by_identity

Makes hsh compare its keys by their identity, i.e. it will consider exact same objects as same keys.

h1 = { "a" => 100, "b" => 200, :c => "c" }
h1["a"]        #=> 100
h1.compare_by_identity
h1.compare_by_identity? #=> true
h1["a"]        #=> nil  # different objects.
h1[:c]         #=> "c"  # same symbols are all same.

Returns:

- (Boolean) compare_by_identity?

Returns true if hsh will compare its keys by their identity. Also see Hash#compare_by_identity.

Returns:

  • (Boolean)

Returns:

  • (Boolean)

- (Object) default(key = nil)

Returns the default value, the value that would be returned by hsh if key did not exist in hsh. See also Hash::new and Hash#default=.

h = Hash.new                            #=> {}
h.default                               #=> nil
h.default(2)                            #=> nil

h = Hash.new("cat")                     #=> {}
h.default                               #=> "cat"
h.default(2)                            #=> "cat"

h = Hash.new {|h,k| h[k] = k.to_i*10}   #=> {}
h.default                               #=> nil
h.default(2)                            #=> 20

Returns:

- (Object) default=(obj)

Sets the default value, the value returned for a key that does not exist in the hash. It is not possible to set the default to a Proc that will be executed on each key lookup.

h = { "a" => 100, "b" => 200 }
h.default = "Go fish"
h["a"]     #=> 100
h["z"]     #=> "Go fish"
# This doesn't do what you might hope...
h.default = proc do |hash, key|
  hash[key] = key + key
end
h[2]       #=> #<Proc:0x401b3948@-:6>
h["cat"]   #=> #<Proc:0x401b3948@-:6>

Returns:

- (Object) default_proc

If Hash::new was invoked with a block, return that block, otherwise return nil.

h = Hash.new {|h,k| h[k] = k*k }   #=> {}
p = h.default_proc                 #=> #<Proc:0x401b3d08@-:1>
a = []                             #=> []
p.call(a, 2)
a                                  #=> [nil, nil, 4]

Returns:

- (Object) delete(key) - (Object) delete(key) {|key| ... }

Deletes and returns a key-value pair from hsh whose key is equal to key. If the key is not found, returns the default value. If the optional code block is given and the key is not found, pass in the key and return the result of block.

h = { "a" => 100, "b" => 200 }
h.delete("a")                              #=> 100
h.delete("z")                              #=> nil
h.delete("z") { |el| "#{el} not found" }   #=> "z not found"

Overloads:

  • - delete {|key| ... }

    Yields:

    • (key)

- (Hash) delete_if {|key, value| ... } - (Enumerator) delete_if

Deletes every key-value pair from hsh for which block evaluates to true.

If no block is given, an enumerator is returned instead.

h = { "a" => 100, "b" => 200, "c" => 300 }
h.delete_if {|key, value| key >= "b" }   #=> {"a"=>100}

Overloads:

  • - delete_if {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - delete_if

    Returns:

- (Object) dup

:nodoc:

- (Hash) each {|key, value| ... } - (Hash) each_pair {|key, value| ... } - (Enumerator) each - (Enumerator) each_pair

Calls block once for each key in hsh, passing the key-value pair as parameters.

If no block is given, an enumerator is returned instead.

h = { "a" => 100, "b" => 200 }
h.each {|key, value| puts "#{key} is #{value}" }

produces:

a is 100
b is 200

Overloads:

  • - each {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - each_pair {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - each

    Returns:

  • - each_pair

    Returns:

- (Hash) each_key {|key| ... } - (Enumerator) each_key

Calls block once for each key in hsh, passing the key as a parameter.

If no block is given, an enumerator is returned instead.

h = { "a" => 100, "b" => 200 }
h.each_key {|key| puts key }

produces:

a
b

Overloads:

  • - each_key {|key| ... }

    Yields:

    • (key)

    Returns:

  • - each_key

    Returns:

- (Hash) each {|key, value| ... } - (Hash) each_pair {|key, value| ... } - (Enumerator) each - (Enumerator) each_pair

Calls block once for each key in hsh, passing the key-value pair as parameters.

If no block is given, an enumerator is returned instead.

h = { "a" => 100, "b" => 200 }
h.each {|key, value| puts "#{key} is #{value}" }

produces:

a is 100
b is 200

Overloads:

  • - each {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - each_pair {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - each

    Returns:

  • - each_pair

    Returns:

- (Hash) each_value {|value| ... } - (Enumerator) each_value

Calls block once for each key in hsh, passing the value as a parameter.

If no block is given, an enumerator is returned instead.

h = { "a" => 100, "b" => 200 }
h.each_value {|value| puts value }

produces:

100
200

Overloads:

  • - each_value {|value| ... }

    Yields:

    • (value)

    Returns:

  • - each_value

    Returns:

- (Boolean) empty?

Returns true if hsh contains no key-value pairs.

{}.empty?   #=> true

Returns:

  • (Boolean)

Returns:

  • (Boolean)

- (Boolean) ==(other_hash)

Equality---Two hashes are equal if they each contain the same number of keys and if each key-value pair is equal to (according to Object#==) the corresponding elements in the other hash.

h1 = { "a" => 1, "c" => 2 }
h2 = { 7 => 35, "c" => 2, "a" => 1 }
h3 = { "a" => 1, "c" => 2, 7 => 35 }
h4 = { "a" => 1, "d" => 2, "f" => 35 }
h1 == h2   #=> false
h2 == h3   #=> true
h3 == h4   #=> false

Returns:

  • (Boolean)

Returns:

  • (Boolean)

- (Object) fetch(key[, default]) - (Object) fetch(key) {|key| ... }

Returns a value from the hash for the given key. If the key can't be found, there are several options: With no other arguments, it will raise an KeyError exception; if default is given, then that will be returned; if the optional code block is specified, then that will be run and its result returned.

h = { "a" => 100, "b" => 200 }
h.fetch("a")                            #=> 100
h.fetch("z", "go fish")                 #=> "go fish"
h.fetch("z") { |el| "go fish, #{el}"}   #=> "go fish, z"

The following example shows that an exception is raised if the key is not found and a default value is not supplied.

h = { "a" => 100, "b" => 200 }
h.fetch("z")

produces:

prog.rb:2:in `fetch': key not found (KeyError)
 from prog.rb:2

Overloads:

  • - fetch

    Returns:

  • - fetch {|key| ... }

    Yields:

    • (key)

    Returns:

- (Array) flatten - (Array) flatten(level)

Returns a new array that is a one-dimensional flattening of this hash. That is, for every key or value that is an array, extract its elements into the new array. Unlike Array#flatten, this method does not flatten recursively by default. The optional level argument determines the level of recursion to flatten.

a =  {1=> "one", 2 => [2,"two"], 3 => "three"}
a.flatten    # => [1, "one", 2, [2, "two"], 3, "three"]
a.flatten(2) # => [1, "one", 2, 2, "two", 3, "three"]

Overloads:

  • - flatten

    Returns:

  • - flatten

    Returns:

- (Boolean) has_key?(key) - (Boolean) include?(key) - (Boolean) key?(key) - (Boolean) member?(key)

Returns true if the given key is present in hsh.

h = { "a" => 100, "b" => 200 }
h.has_key?("a")   #=> true
h.has_key?("z")   #=> false

Overloads:

  • - has_key?

    Returns:

    • (Boolean)
  • - include?

    Returns:

    • (Boolean)
  • - key?

    Returns:

    • (Boolean)
  • - member?

    Returns:

    • (Boolean)

Returns:

  • (Boolean)

- (Boolean) has_value?(value) - (Boolean) value?(value)

Returns true if the given value is present for some key in hsh.

h = { "a" => 100, "b" => 200 }
h.has_value?(100)   #=> true
h.has_value?(999)   #=> false

Overloads:

  • - has_value?

    Returns:

    • (Boolean)
  • - value?

    Returns:

    • (Boolean)

Returns:

  • (Boolean)

- (Boolean) has_key?(key) - (Boolean) include?(key) - (Boolean) key?(key) - (Boolean) member?(key)

Returns true if the given key is present in hsh.

h = { "a" => 100, "b" => 200 }
h.has_key?("a")   #=> true
h.has_key?("z")   #=> false

Overloads:

  • - has_key?

    Returns:

    • (Boolean)
  • - include?

    Returns:

    • (Boolean)
  • - key?

    Returns:

    • (Boolean)
  • - member?

    Returns:

    • (Boolean)

Returns:

  • (Boolean)

- (Object) index

:nodoc:

- (String) to_s - (String) inspect

Return the contents of this hash as a string.

h = { "c" => 300, "a" => 100, "d" => 400, "c" => 300  }
h.to_s   #=> "{\"c\"=>300, \"a\"=>100, \"d\"=>400}"

Overloads:

- (Hash) keep_if {|key, value| ... } - (Enumerator) keep_if

Deletes every key-value pair from hsh for which block evaluates to false.

If no block is given, an enumerator is returned instead.

Overloads:

  • - keep_if {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - keep_if

    Returns:

- (Object) key(value)

Returns the key of an occurrence of a given value. If the value is not found, returns nil.

h = { "a" => 100, "b" => 200, "c" => 300, "d" => 300 }
h.key(200)   #=> "b"
h.key(300)   #=> "c"
h.key(999)   #=> nil

- (Boolean) has_key?(key) - (Boolean) include?(key) - (Boolean) key?(key) - (Boolean) member?(key)

Returns true if the given key is present in hsh.

h = { "a" => 100, "b" => 200 }
h.has_key?("a")   #=> true
h.has_key?("z")   #=> false

Overloads:

  • - has_key?

    Returns:

    • (Boolean)
  • - include?

    Returns:

    • (Boolean)
  • - key?

    Returns:

    • (Boolean)
  • - member?

    Returns:

    • (Boolean)

Returns:

  • (Boolean)

- (Array) keys

Returns a new array populated with the keys from this hash. See also Hash#values.

h = { "a" => 100, "b" => 200, "c" => 300, "d" => 400 }
h.keys   #=> ["a", "b", "c", "d"]

Returns:

- (Fixnum) length - (Fixnum) size

Returns the number of key-value pairs in the hash.

h = { "d" => 100, "a" => 200, "v" => 300, "e" => 400 }
h.length        #=> 4
h.delete("a")   #=> 200
h.length        #=> 3

Overloads:

- (Boolean) has_key?(key) - (Boolean) include?(key) - (Boolean) key?(key) - (Boolean) member?(key)

Returns true if the given key is present in hsh.

h = { "a" => 100, "b" => 200 }
h.has_key?("a")   #=> true
h.has_key?("z")   #=> false

Overloads:

  • - has_key?

    Returns:

    • (Boolean)
  • - include?

    Returns:

    • (Boolean)
  • - key?

    Returns:

    • (Boolean)
  • - member?

    Returns:

    • (Boolean)

Returns:

  • (Boolean)

- (Hash) merge(other_hash) - (Hash) merge(other_hash) {|key, oldval, newval| ... }

Returns a new hash containing the contents of other_hash and the contents of hsh. If no block is specified, the value for entries with duplicate keys will be that of other_hash. Otherwise the value for each duplicate key is determined by calling the block with the key, its value in hsh and its value in other_hash.

h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge(h2)   #=> {"a"=>100, "b"=>254, "c"=>300}
h1.merge(h2){|key, oldval, newval| newval - oldval}
               #=> {"a"=>100, "b"=>54,  "c"=>300}
h1             #=> {"a"=>100, "b"=>200}

Overloads:

  • - merge

    Returns:

  • - merge {|key, oldval, newval| ... }

    Yields:

    • (key, oldval, newval)

    Returns:

- (Hash) merge!(other_hash) - (Hash) update(other_hash) - (Hash) merge!(other_hash) {|key, oldval, newval| ... } - (Hash) update(other_hash) {|key, oldval, newval| ... }

Adds the contents of other_hash to hsh. If no block is specified, entries with duplicate keys are overwritten with the values from other_hash, otherwise the value of each duplicate key is determined by calling the block with the key, its value in hsh and its value in other_hash.

h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge!(h2)   #=> {"a"=>100, "b"=>254, "c"=>300}

h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge!(h2) { |key, v1, v2| v1 }
                #=> {"a"=>100, "b"=>200, "c"=>300}

Overloads:

  • - merge!

    Returns:

  • - update

    Returns:

  • - merge! {|key, oldval, newval| ... }

    Yields:

    • (key, oldval, newval)

    Returns:

  • - update {|key, oldval, newval| ... }

    Yields:

    • (key, oldval, newval)

    Returns:

- (Array?) rassoc(obj)

Searches through the hash comparing obj with the value using ==. Returns the first key-value pair (two-element array) that matches. See also Array#rassoc.

a = {1=> "one", 2 => "two", 3 => "three", "ii" => "two"}
a.rassoc("two")    #=> [2, "two"]
a.rassoc("four")   #=> nil

Returns:

- (Hash) rehash

Rebuilds the hash based on the current hash values for each key. If values of key objects have changed since they were inserted, this method will reindex hsh. If Hash#rehash is called while an iterator is traversing the hash, an RuntimeError will be raised in the iterator.

a = [ "a", "b" ]
c = [ "c", "d" ]
h = { a => 100, c => 300 }
h[a]       #=> 100
a[0] = "z"
h[a]       #=> nil
h.rehash   #=> {["z", "b"]=>100, ["c", "d"]=>300}
h[a]       #=> 100

Returns:

- (Hash) reject {|key, value| ... } - (Enumerator) reject

Same as Hash#delete_if, but works on (and returns) a copy of the hsh. Equivalent to hsh.dup.delete_if.

Overloads:

  • - reject {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - reject

    Returns:

- (Hash?) reject! {|key, value| ... } - (Enumerator) reject!

Equivalent to Hash#delete_if, but returns nil if no changes were made.

Overloads:

  • - reject! {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - reject!

    Returns:

- (Hash) replace(other_hash)

Replaces the contents of hsh with the contents of other_hash.

h = { "a" => 100, "b" => 200 }
h.replace({ "c" => 300, "d" => 400 })   #=> {"c"=>300, "d"=>400}

Returns:

- (Hash) select {|key, value| ... } - (Enumerator) select

Returns a new hash consisting of entries for which the block returns true.

If no block is given, an enumerator is returned instead.

h = { "a" => 100, "b" => 200, "c" => 300 }
h.select {|k,v| k > "a"}  #=> {"b" => 200, "c" => 300}
h.select {|k,v| v < 200}  #=> {"a" => 100}

Overloads:

  • - select {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - select

    Returns:

- (Hash?) select! {|key, value| ... } - (Enumerator) select!

Equivalent to Hash#keep_if, but returns nil if no changes were made.

Overloads:

  • - select! {|key, value| ... }

    Yields:

    • (key, value)

    Returns:

  • - select!

    Returns:

- (Array, Object) shift

Removes a key-value pair from hsh and returns it as the two-item array [ key, value ], or the hash's default value if the hash is empty.

h = { 1 => "a", 2 => "b", 3 => "c" }
h.shift   #=> [1, "a"]
h         #=> {2=>"b", 3=>"c"}

Returns:

- (Fixnum) length - (Fixnum) size

Returns the number of key-value pairs in the hash.

h = { "d" => 100, "a" => 200, "v" => 300, "e" => 400 }
h.length        #=> 4
h.delete("a")   #=> 200
h.length        #=> 3

Overloads:

- (Object) []=(key) - (Object) store(key, value)

Element Assignment---Associates the value given by value with the key given by key. key should not have its value changed while it is in use as a key (a String passed as a key will be duplicated and frozen).

h = { "a" => 100, "b" => 200 }
h["a"] = 9
h["c"] = 4
h   #=> {"a"=>9, "b"=>200, "c"=>4}

- (Array) to_a

Converts hsh to a nested array of [ key, value ] arrays.

h = { "c" => 300, "a" => 100, "d" => 400, "c" => 300  }
h.to_a   #=> [["c", 300], ["a", 100], ["d", 400]]

Returns:

- (Hash) to_hash

Returns self.

Returns:

- (String) to_s - (String) inspect

Return the contents of this hash as a string.

h = { "c" => 300, "a" => 100, "d" => 400, "c" => 300  }
h.to_s   #=> "{\"c\"=>300, \"a\"=>100, \"d\"=>400}"

Overloads:

- (Hash) merge!(other_hash) - (Hash) update(other_hash) - (Hash) merge!(other_hash) {|key, oldval, newval| ... } - (Hash) update(other_hash) {|key, oldval, newval| ... }

Adds the contents of other_hash to hsh. If no block is specified, entries with duplicate keys are overwritten with the values from other_hash, otherwise the value of each duplicate key is determined by calling the block with the key, its value in hsh and its value in other_hash.

h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge!(h2)   #=> {"a"=>100, "b"=>254, "c"=>300}

h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge!(h2) { |key, v1, v2| v1 }
                #=> {"a"=>100, "b"=>200, "c"=>300}

Overloads:

  • - merge!

    Returns:

  • - update

    Returns:

  • - merge! {|key, oldval, newval| ... }

    Yields:

    • (key, oldval, newval)

    Returns:

  • - update {|key, oldval, newval| ... }

    Yields:

    • (key, oldval, newval)

    Returns:

- (Boolean) has_value?(value) - (Boolean) value?(value)

Returns true if the given value is present for some key in hsh.

h = { "a" => 100, "b" => 200 }
h.has_value?(100)   #=> true
h.has_value?(999)   #=> false

Overloads:

  • - has_value?

    Returns:

    • (Boolean)
  • - value?

    Returns:

    • (Boolean)

Returns:

  • (Boolean)

- (Array) values

Returns a new array populated with the values from hsh. See also Hash#keys.

h = { "a" => 100, "b" => 200, "c" => 300 }
h.values   #=> [100, 200, 300]

Returns:

- (Array) values_at(key, ...)

Return an array containing the values associated with the given keys. Also see Hash.select.

h = { "cat" => "feline", "dog" => "canine", "cow" => "bovine" }
h.values_at("cow", "cat")  #=> ["bovine", "feline"]

Returns: