2006/5/21, Alder Green <alder.green / gmail.com>: > I can see two ways to deal with this issue: > > 1. Always prefix foo.bar= calls with self within foo. This eliminates > the local-variable possible interpration. However, it is kind of > ugly, and it's easy to introduce elusive bugs by forgetting the > prefix. > > 2. Avoid using the bar= syntax. You can either use a seperate setter > method set_bar, or what the code you posted does (set and return bar > to arg if supplied, just return bar otherwise). A nice variant of 2 makes use of the fact that a method can receive a hash without using curly braces: >> class Foo >> def init(params) >> params.each {|k,v| print k,"=",v,"\n"} >> end >> end => nil >> Foo.new.init(:name => "foo", :size => 123) size=123 name=foo => {:size=>123, :name=>"foo"} Instead of printing you can of course use key value pairs for setting instance variables or invoking setters. Kind regards robert -- Have a look: http://www.flickr.com/photos/fussel-foto/