On Apr 23, 2009, at 10:01 AM, Keith Salisbury wrote: > Or more simply, i would like this to update the variable @greeting, > when > i call Keith.learn_french: > > module Keith > def self.greeting > @greeting ||= "hello" > end > def self.greeting=(value) > puts "updating knowledge" > @greeting = value > end > def self.speak > puts greeting > end > def self.learn_french > learn_language(greeting, "bonjour") > end > def self.learn_language(prop, value) > prop = value > end > end > > Keith.speak > Keith.learn_french > Keith.speak > > But the only way i can get it to work is using this: > > module Keith > def self.greeting > @greeting ||= "hello" > end > def self.greeting=(value) > puts "updating knowledge" > @greeting = value > end > def self.speak > puts greeting > end > def self.learn_french > self.greeting = learn_language(greeting, "bonjour") > end > def self.learn_language(prop, value) > prop = value > end > end > > Keith.speak > Keith.learn_french > Keith.speak > > > Which is basically the same as: > > module Keith > def self.greeting > @greeting ||= "hello" > end > def self.greeting=(value) > puts "updating knowledge" > @greeting = value > end > def self.speak > puts greeting > end > def self.learn_french > self.greeting = "bonjour" > end > end > > Keith.speak > Keith.learn_french > Keith.speak > -- > Posted via http://www.ruby-forum.com/. Keeping the other methods the same: module Keith def self.learn_french learn_language(:greeting, "bonjour") end def self.learn_language(prop, value) self.send("#{prop}=", value) end end irb> Keith.speak hello => nil irb> Keith.learn_french updating knowledge => "bonjour" irb> Keith.speak bonjour => nil Although I'd think that you'd be better with a Speaker class and do: Keith = Speaker.new Then you'd be dealing with instance variables on instances of the Speaker class rather than instance variables on the Keith module. Contrary to what you might think, you don't have class variables in your code. (Those would be @@greeting) -Rob Rob Biedenharn http://agileconsultingllc.com Rob / AgileConsultingLLC.com