Class | Cache
In: | lib/facets/more/cache.rb
Parent: | Object

# Cache

Cache objects are a kind of "delegator-with-cache".

## Usage

      class X
        def initialize ; @tick = 0 ; end
        def tick; @tick + 1; end
        def cached; @cache ||= Cache.new( self ) ; end
      end

      x = X.new
      x.tick  #=> 1
      x.cached.tick  #=> 2
      x.tick  #=> 3
      x.cached.tick  #=> 2
      x.tick  #=> 4
      x.cached.tick  #=> 2

You can also use to cache a collections of objects to gain code speed ups.

      points = points.collect{|point| Cache.cache(point)}

After our algorithm has finished using points, we want to get rid of these Cache objects. That‘s easy:

       points = points.collect{|point| point.self }

Or if you prefer (it is ever so slightly safer):

       points = points.collect{|point| Cache.uncache(point)}

### Methods

cache method_missing new self uncache

### Public Class methods

cache(object)
new(object)
uncache(cached_object)

### Public Instance methods

method_missing(method_name, *args, &block)
self()

[Validate]