ah yes that makes sense now. I admit that ruby is the first language I've been exposed to that supports closures as arguments. I'll read into it to become a little more familiar.
the second link states that closures have access to variables visible at the time they were defined. that would explain why i got hung up on this. thanks! On Feb 16, 7:08 pm, John Mettraux <[email protected]> wrote: > On Wed, Feb 17, 2010 at 12:00 AM, Dave @ UPENN <[email protected]> wrote: > > > > > BUT when i was calling it in a rails activerecord, 'self' appears to > > be overwritten in the Dsl. so I had to reassign any of those methods > > to a variable.. > > Hi Dave, > > there is no overwriting in the DSL. > > Consider that piece of Ruby code : > > ---8<--- > def generate > p [ :generate, self ] > R.pdef > end > > module R > def self.pdef > p [ :pdef, self ] > end > end > > generate > --->8--- > > It will return > > ---8<--- > $ ruby t.rb > [:generate, main] > [:pdef, R] > --->8--- > > Or that one : > > ---8<--- > def generate > p [ :generate, self ] > C.new.pdef > end > > class C > def pdef > p [ :pdef, self ] > end > end > > generate > --->8--- > > which gives : > > ---8<--- > $ ruby t.rb > [:generate, main] > [:pdef, #<C:0x100156160>] > --->8--- > > See, no overwriting, just regular Ruby behaviour. > > Now you may want to read about "closures" : > > http://en.wikipedia.org/wiki/Closure_%28computer_science%29 > > Maybe this article about Ruby and closures might suit you : > > http://martinfowler.com/bliki/Closure.html > > Please read it carefully. > > You are just dealing with a bit more advanced Ruby concepts. There is > no Rails or ruote interference with your code, no overwriting, no > magic. > > Best regards, > > -- > John Mettraux - http://jmettraux.wordpress.com -- you received this message because you are subscribed to the "ruote users" group. to post : send email to [email protected] to unsubscribe : send email to [email protected] more options : http://groups.google.com/group/openwferu-users?hl=en
