Skip to content

r7kamura/mem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mem

CI

Memoize method calls.

Installation

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

Usage

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 }

core ext

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