Module: Bandit::Memoizable

Included in:
EpsilonGreedyPlayer
Defined in:
lib/bandit/memoizable.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



27
28
29
# File 'lib/bandit/memoizable.rb', line 27

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#memoize(key, time = 60) ⇒ Object

remember a block for some time (60 seconds by default)



4
5
6
7
8
9
10
11
12
13
# File 'lib/bandit/memoizable.rb', line 4

def memoize(key, time=60)
  @memoized ||= {}
  @memoized_times ||= {}
  now = Time.now.to_i
  if not @memoized.has_key?(key) or now > @memoized_times[key]
    @memoized[key] = yield
    @memoized_times[key] = now + time
  end
  @memoized[key]
end