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.
Class Method Summary collapse
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
Constructor Details
#initialize(left, key, value, right) ⇒ Fork
Returns a new instance of Fork.
135 136 137 |
# File 'lib/immutable/map.rb', line 135 def initialize(left, key, value, right) @left, @key, @value, @right = left, key, value, right end |
Instance Attribute Details
#key ⇒ Object (readonly)
Returns the value of attribute key.
133 134 135 |
# File 'lib/immutable/map.rb', line 133 def key @key end |
#left ⇒ Object (readonly)
Returns the value of attribute left.
133 134 135 |
# File 'lib/immutable/map.rb', line 133 def left @left end |
#right ⇒ Object (readonly)
Returns the value of attribute right.
133 134 135 |
# File 'lib/immutable/map.rb', line 133 def right @right end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
133 134 135 |
# File 'lib/immutable/map.rb', line 133 def value @value end |
Class Method Details
.extract(val) ⇒ Object
139 140 141 142 |
# File 'lib/immutable/map.rb', line 139 def self.extract(val) accept_self_instance_only(val) [val.left, val.key, val.value, val.right] end |
Instance Method Details
#[](key) ⇒ Object
152 153 154 155 156 157 158 159 160 |
# File 'lib/immutable/map.rb', line 152 def [](key) if key < self.key left[key] elsif key > self.key right[key] else value end end |
#del(key) ⇒ Object
162 163 164 165 166 167 168 169 170 |
# File 'lib/immutable/map.rb', line 162 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
148 149 150 |
# File 'lib/immutable/map.rb', line 148 def empty? false end |
#foldl_with_key(e, &block) ⇒ Object
185 186 187 188 |
# File 'lib/immutable/map.rb', line 185 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
176 177 178 179 |
# File 'lib/immutable/map.rb', line 176 def foldr_with_key(e, &block) r = @right.foldr_with_key(e, &block) @left.foldr_with_key(yield(@key, @value, r), &block) end |