Class: Immutable::Map::Fork
- Inherits:
-
Immutable::Map
- Object
- Immutable::Map
- Immutable::Map::Fork
- Defined in:
- lib/immutable/map.rb
Overview
:nodoc:
Constant Summary
Constants inherited from Immutable::Map
Instance Attribute Summary collapse
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#left ⇒ Object
readonly
Returns the value of attribute left.
-
#right ⇒ Object
readonly
Returns the value of attribute right.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #del(key) ⇒ Object
- #empty? ⇒ Boolean
- #foldl_with_key(e, &block) ⇒ Object
- #foldr_with_key(e, &block) ⇒ Object
-
#initialize(left, key, value, right) ⇒ Fork
constructor
A new instance of Fork.
Methods inherited from Immutable::Map
#delete, #each, empty, #foldl, #foldr, #insert, #inspect, #map, #map_with_key, singleton
Methods included from Foldable
#foldl, #length, #product, #sum
Constructor Details
#initialize(left, key, value, right) ⇒ Fork
Returns a new instance of Fork.
138 139 140 141 142 143 |
# File 'lib/immutable/map.rb', line 138 def initialize(left, key, value, right) @left = left @key = key @value = value @right = right end |
Instance Attribute Details
#key ⇒ Object (readonly)
Returns the value of attribute key.
136 137 138 |
# File 'lib/immutable/map.rb', line 136 def key @key end |
#left ⇒ Object (readonly)
Returns the value of attribute left.
136 137 138 |
# File 'lib/immutable/map.rb', line 136 def left @left end |
#right ⇒ Object (readonly)
Returns the value of attribute right.
136 137 138 |
# File 'lib/immutable/map.rb', line 136 def right @right end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
136 137 138 |
# File 'lib/immutable/map.rb', line 136 def value @value end |
Instance Method Details
#[](key) ⇒ Object
153 154 155 156 157 158 159 160 161 162 |
# File 'lib/immutable/map.rb', line 153 def [](key) x = key <=> @key if x < 0 @left[key] elsif x > 0 @right[key] else @value end end |
#del(key) ⇒ Object
164 165 166 167 168 169 170 171 172 |
# File 'lib/immutable/map.rb', line 164 def del(key) if key < self.key del_left(left, self.key, self.value, right, key) elsif key > self.key del_right(left, self.key, self.value, right, key) else app(left, right) end end |
#empty? ⇒ Boolean
149 150 151 |
# File 'lib/immutable/map.rb', line 149 def empty? false end |
#foldl_with_key(e, &block) ⇒ Object
187 188 189 190 |
# File 'lib/immutable/map.rb', line 187 def foldl_with_key(e, &block) l = @left.foldl_with_key(e, &block) @right.foldl_with_key(yield(l, @key, @value), &block) end |
#foldr_with_key(e, &block) ⇒ Object
178 179 180 181 |
# File 'lib/immutable/map.rb', line 178 def foldr_with_key(e, &block) r = @right.foldr_with_key(e, &block) @left.foldr_with_key(yield(@key, @value, r), &block) end |