Class: Hash
- Inherits:
- NSMutableDictionary show all
- Includes:
- Enumerable
Instance Method Summary (collapse)
-
- ==
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.
-
- []
Creates a new hash populated with the given objects.
-
- []=
Element Assignment---Associates the value given by value with the key given by key.
-
- assoc
Searches through the hash comparing obj with the key using ==.
-
- clear
Removes all key-value pairs from hsh.
-
- compare_by_identity
Makes hsh compare its keys by their identity, i.e.
-
- compare_by_identity?
Returns true if hsh will compare its keys by their identity.
-
- default
Returns the default value, the value that would be returned by hsh if key did not exist in hsh.
-
- default=
Sets the default value, the value returned for a key that does not exist in the hash.
-
- default_proc
If Hash::new was invoked with a block, return that block, otherwise return nil.
-
- delete
Deletes and returns a key-value pair from hsh whose key is equal to key.
-
- delete_if
Deletes every key-value pair from hsh for which block evaluates to true.
-
- dup
:nodoc:.
-
- each
Calls block once for each key in hsh, passing the key-value pair as parameters.
-
- each_key
Calls block once for each key in hsh, passing the key as a parameter.
-
- each_pair
Calls block once for each key in hsh, passing the key-value pair as parameters.
-
- each_value
Calls block once for each key in hsh, passing the value as a parameter.
-
- empty?
Returns true if hsh contains no key-value pairs.
-
- ==
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.
-
- fetch
Returns a value from the hash for the given key.
-
- flatten
Returns a new array that is a one-dimensional flattening of this hash.
-
- has_key?
Returns true if the given key is present in hsh.
-
- has_value?
Returns true if the given value is present for some key in hsh.
-
- include?
Returns true if the given key is present in hsh.
-
- index
:nodoc:.
-
- inspect
Return the contents of this hash as a string.
-
- keep_if
Deletes every key-value pair from hsh for which block evaluates to false.
-
- key
Returns the key of an occurrence of a given value.
-
- key?
Returns true if the given key is present in hsh.
-
- keys
Returns a new array populated with the keys from this hash.
-
- length
Returns the number of key-value pairs in the hash.
-
- member?
Returns true if the given key is present in hsh.
-
- merge
Returns a new hash containing the contents of other_hash and the contents of hsh.
-
- merge!
Adds the contents of other_hash to hsh.
-
- rassoc
Searches through the hash comparing obj with the value using ==.
-
- rehash
Rebuilds the hash based on the current hash values for each key.
-
- reject
Same as Hash#delete_if, but works on (and returns) a copy of the hsh.
-
- reject!
Equivalent to Hash#delete_if, but returns nil if no changes were made.
-
- replace
Replaces the contents of hsh with the contents of other_hash.
-
- select
Returns a new hash consisting of entries for which the block returns true.
-
- select!
Equivalent to Hash#keep_if, but returns nil if no changes were made.
-
- 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.
-
- size
Returns the number of key-value pairs in the hash.
-
- store
Element Assignment---Associates the value given by value with the key given by key.
-
- to_a
Converts hsh to a nested array of [ key, value ] arrays.
-
- to_hash
Returns self.
-
- to_s
Return the contents of this hash as a string.
-
- update
Adds the contents of other_hash to hsh.
-
- value?
Returns true if the given value is present for some key in hsh.
-
- values
Returns a new array populated with the values from hsh.
-
- values_at
Return an array containing the values associated with the given keys.
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
- (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}
- (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
- (Hash) clear
Removes all key-value pairs from hsh.
h = { "a" => 100, "b" => 200 } #=> {"a"=>100, "b"=>200}
h.clear #=> {}
- (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.
- (Boolean) compare_by_identity?
Returns true if hsh will compare its keys by their identity. Also see Hash#compare_by_identity.
- (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
- (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>
- (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]
- (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"
- (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}
- (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
- (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
- (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
- (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
- (Boolean) empty?
Returns true if hsh contains no key-value pairs.
{}.empty? #=> true
- (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
- (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
- (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"]
- (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
- (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
- (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
- (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}"
- (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.
- (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
- (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"]
- (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
- (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
- (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}
- (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}
- (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
- (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
- (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.
- (Hash?) reject! {|key, value| ... } - (Enumerator) reject!
Equivalent to Hash#delete_if, but returns nil if no changes were made.
- (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}
- (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}
- (Hash?) select! {|key, value| ... } - (Enumerator) select!
Equivalent to Hash#keep_if, but returns nil if no changes were made.
- (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"}
- (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
- (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]]
- (Hash) to_hash
Returns self.
- (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}"
- (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}
- (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