module Pry::Config::Memoization::ClassMethods

Public Instance Methods

def_memoized(method_table) click to toggle source

Defines one or more methods who return a constant value after being called once.

@example

class Foo
  include Pry::Config::Memoization
  def_memoized({
    foo: proc {1+10},
    bar: proc{"aaa"<<"a"}
  })
end

@param [{String => Proc}] method_table

@return [void]

# File lib/pry/config/memoization.rb, line 24
def def_memoized(method_table)
  method_table.each do |method_name, method|
    define_method(method_name) do
      method_table[method_name] = instance_eval(&method) if method_table[method_name].equal? method
      method_table[method_name]
    end
  end
  MEMOIZED_METHODS[self] |= method_table.keys
end