Memoize method calls.
Install the gem and add to the application's Gemfile by executing:
bundle add mem
If bundler is not being used to manage dependencies, install the gem by executing:
gem install mem
class Foo
include Mem
def initialize
@count = 0
end
def bar
baz
end
# `memoize` defines bar_with_memoize & bar_without_memoize,
# and the result of the 1st method call is stored into @memoized_table.
memoize :bar
private
def baz
@count += 1
end
end
foo = Foo.new
foo.bar #=> 1
foo.bar #=> 1
foo.bar #=> 1
foo.has_memoized?(:bar) #=> true
foo.memoized(:bar) #=> 1
foo.memoized_table #=> { bar: 1 }
You can require "mem/core_ext"
to skip include Mem
,
while this extends Object class.
require "mem/core_ext"
class A
def x
puts 1
end
memoize :x
end
a = A.new
a.x #=> 1
a.x #=> nothing logged out
a.x #=> nothing logged out