Sha256: 6c8eb5580b68c10a7798f539b1c935127a139b9014d3bafa55a8537d88cc654a
Contents?: true
Size: 1.01 KB
Versions: 2
Compression:
Stored size: 1.01 KB
Contents
# frozen_string_literal: true module SmartCore::Container::Entities # @api private # @since 0.2.0 class MemoizedDependency < Dependency # @param dependency_name [String] # @param dependency_definition [Proc] # @return [void] # # @api private # @since 0.2.0 def initialize(dependency_name, dependency_definition) super(dependency_name, dependency_definition) @lock = SmartCore::Container::ArbitraryLock.new end # @param host_container [SmartCore::Container, NilClass] # @return [Any] # # @api private # @since 0.2.0 # @version 0.8.1 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 private # @return [Proc] # # @api private # @since 0.2.0 attr_reader :dependency_definition end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
smart_container-0.9.0 | lib/smart_core/container/entities/memoized_dependency.rb |
smart_container-0.8.1 | lib/smart_core/container/entities/memoized_dependency.rb |