Class: LaunchDarkly::MemoizedValue
- Inherits:
-
Object
- Object
- LaunchDarkly::MemoizedValue
- Defined in:
- lib/ldclient-rb/memoized_value.rb
Overview
Simple implementation of a thread-safe memoized value whose generator function will never be run more than once, and whose value can be overridden by explicit assignment.
Instance Method Summary collapse
- #get ⇒ Object
-
#initialize(&generator) ⇒ MemoizedValue
constructor
A new instance of MemoizedValue.
- #set(value) ⇒ Object
Constructor Details
#initialize(&generator) ⇒ MemoizedValue
Returns a new instance of MemoizedValue.
6 7 8 9 10 11 |
# File 'lib/ldclient-rb/memoized_value.rb', line 6 def initialize(&generator) @generator = generator @mutex = Mutex.new @inited = false @value = nil end |
Instance Method Details
#get ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/ldclient-rb/memoized_value.rb', line 13 def get @mutex.synchronize do if !@inited @value = @generator.call @inited = true end end @value end |
#set(value) ⇒ Object
23 24 25 26 27 28 |
# File 'lib/ldclient-rb/memoized_value.rb', line 23 def set(value) @mutex.synchronize do @value = value @inited = true end end |