Class: OrderedSet
- Defined in
- lib/kyanite/set.rb
Set Classes and Additions
- Kyanite definitions
- Kyanite tests and examples
- Usage
-
require 'kyanite/set'
Differences between the set classes
- OrderedSet
-
is ordered, it retains the original order, but it will not continually re-sorted -- as long you don't use Dictionary#order_by. Examples: test_ordered_set
- SortedSet
-
is ordered and sorted. It is always in order. Examples: test_sorted_set
Instance Method Summary (collapse)
- - (Boolean) ==(other)
-
- (Object) [](index)
N-th Element.
- - (Object) each
-
- (Object) first
First element.
-
- (Object) index(object)
like Array#index.
-
- (OrderedSet) initialize(enum = nil, &block)
:yields: o.
-
- (Object) last
Last element.
- - (Object) order_by(&block)
-
- (Array) to_a
This method is fast.
Constructor Details
- (OrderedSet) initialize(enum = nil, &block)
:yields: o
73 74 75 76 77 78 79 80 81 |
# File 'lib/kyanite/set.rb', line 73 def initialize(enum = nil, &block) # :yields: o @hash ||= Dictionary.new enum.nil? and return if block enum.each { |o| add(block[o]) } else merge(enum) end end |
Instance Method Details
- (Boolean) ==(other)
103 104 105 106 107 |
# File 'lib/kyanite/set.rb', line 103 def ==(other) silence_warnings do self.to_a.to_set == other.to_a.to_set end end |
- (Object) [](index)
N-th Element
85 86 87 |
# File 'lib/kyanite/set.rb', line 85 def [](index) @hash.order[index] end |
- (Object) each
114 115 116 117 |
# File 'lib/kyanite/set.rb', line 114 def each to_a.each { |e| yield( e ) } self end |
- (Object) first
First element
124 125 126 |
# File 'lib/kyanite/set.rb', line 124 def first self[0] end |
- (Object) index(object)
like Array#index
110 111 112 |
# File 'lib/kyanite/set.rb', line 110 def index(object) self.to_a.index(object) end |
- (Object) last
Last element
129 130 131 |
# File 'lib/kyanite/set.rb', line 129 def last self[-1] end |
- (Object) order_by(&block)
119 120 121 |
# File 'lib/kyanite/set.rb', line 119 def order_by( &block ) @hash.order_by( &block ) end |
- (Array) to_a
This method is fast. Nothing needs to be converted.
97 98 99 |
# File 'lib/kyanite/set.rb', line 97 def to_a @hash.order end |