Set implements a collection of unordered values with no duplicates. This is a hybrid of Array's intuitive inter-operation facilities and Hash's fast lookup.
The equality of each couple of elements is determined according to Object#eql? and Object#hash, since Set uses Hash as storage.
Set is easy to use with Enumerable objects (implementing
each
). Most of the initializer methods and binary operators
accept generic Enumerable objects besides
sets and arrays. An Enumerable object can be
converted to Set using the to_set
method.
Comparison
The comparison operators <, >, <= and >= are implemented as shorthand for the {proper_,}{subset?,superset?} methods. However, the <=> operator is intentionally left out because not every pair of sets is comparable. ({x,y} vs. {x,z} for example)
Example
require 'set' s1 = Set.new [1, 2] # -> #<Set: {1, 2}> s2 = [1, 2].to_set # -> #<Set: {1, 2}> s1 == s2 # -> true s1.add("foo") # -> #<Set: {1, 2, "foo"}> s1.merge([2, 6]) # -> #<Set: {6, 1, 2, "foo"}> s1.subset? s2 # -> false s2.subset? s1 # -> true
Contact
- Akinori MUSHA <knu@iDaemons.org> (current maintainer)