class SmartCore::Container::Entities::MemoizedDependency

@api private @since 0.2.0

Attributes

dependency_definition[R]

@return [Proc]

@api private @since 0.2.0

Public Class Methods

new(dependency_name, dependency_definition) click to toggle source

@param dependency_name [String] @param dependency_definition [Proc] @return [void]

@api private @since 0.2.0

# File lib/smart_core/container/entities/memoized_dependency.rb, line 13
def initialize(dependency_name, dependency_definition)
  super(dependency_name, dependency_definition)
  @lock = SmartCore::Container::ArbitraryLock.new
end

Public Instance Methods

reveal(host_container = SmartCore::Container::NO_HOST_CONTAINER) click to toggle source

@param host_container [SmartCore::Container, NilClass] @return [Any]

@api private @since 0.2.0 @version 0.8.1

# File lib/smart_core/container/entities/memoized_dependency.rb, line 24
def reveal(host_container = SmartCore::Container::NO_HOST_CONTAINER)
  @lock.thread_safe do
    unless instance_variable_defined?(:@revealed_dependency)
      @revealed_dependency = dependency_definition.call
    else
      @revealed_dependency
    end
  end
end