Class: Concurrent::LazyRegister
- Inherits:
-
Synchronization::Object
- Object
- Synchronization::Object
- Concurrent::LazyRegister
- Defined in:
- lib/concurrent/lazy_register.rb
Overview
Edge Feature: Edge features are under active development and may change frequently. They are expected not to
keep backward compatibility (there may also lack tests and documentation). Semantic versions will
be obeyed though. Features developed in concurrent-ruby-edge
are expected to move
to concurrent-ruby
when final.
Hash-like collection that store lazys evaluated values.
Instance Method Summary (collapse)
-
- (Object) [](key)
Element reference.
-
- (LazyRegister) initialize
constructor
A new instance of LazyRegister.
-
- (LazyRegister) register(key) { ... }
(also: #add, #store)
Element assignment.
-
- (true, false) registered?(key)
(also: #key?, #has_key?)
Returns true if the given key is present.
-
- (LazyRegister) unregister(key)
(also: #remove, #delete)
Un-registers the object under key, realized or not.
Constructor Details
- (LazyRegister) initialize
Returns a new instance of LazyRegister
23 24 25 26 |
# File 'lib/concurrent/lazy_register.rb', line 23 def initialize super self.data = {} end |
Instance Method Details
- (Object) [](key)
Element reference. Retrieves the value object corresponding to the key object. Returns nil if the key is not found. Raises an exception if the stored item raised an exception when the block was evaluated.
36 37 38 39 |
# File 'lib/concurrent/lazy_register.rb', line 36 def [](key) delay = data[key] delay ? delay.value! : nil end |
- (LazyRegister) register(key) { ... } Also known as: add, store
Element assignment. Associates the value given by value with the key given by key.
59 60 61 62 63 |
# File 'lib/concurrent/lazy_register.rb', line 59 def register(key, &block) delay = Delay.new(executor: :immediate, &block) update_data { |h| h.merge(key => delay) } self end |
- (true, false) registered?(key) Also known as: key?, has_key?
Returns true if the given key is present.
45 46 47 |
# File 'lib/concurrent/lazy_register.rb', line 45 def registered?(key) data.key?(key) end |
- (LazyRegister) unregister(key) Also known as: remove, delete
Un-registers the object under key, realized or not.
73 74 75 76 |
# File 'lib/concurrent/lazy_register.rb', line 73 def unregister(key) update_data { |h| h.dup.tap { |j| j.delete(key) } } self end |