From: Lars Christensen Date: 2008-07-02T19:32:02+09:00 Subject: Ruby Idiom for dynamic programming? (request for comments) Random idea i had... I sometimes make custom classes/method for caching output of functions, i.e. for dynamic programming. To generalise this, i though it would be possible to implement it like this: class A def func(a, b, *c) puts "Computing... #{[a,b,c].inspect}" return [a,b,c].hash end cached :func end My 'cached' directive is defined as: class Module def cached(method, cache = (@@funccache ||= {})) orig = "uncached_#{method}" alias_method orig, method define_method method do |*args| key = [ method, args ] @@funccache[key] ||= send(orig, *args) end end end What's the scope of @@funccache? (What 'object' holds it?). Is there a better way to do it? Lars