Hi -- On Thu, 25 Aug 2005, Hal Fulton wrote: > David A. Black wrote: >> Hi -- >> >> On Thu, 25 Aug 2005, Hal Fulton wrote: >> >>> >>> Well, Structs are not implemented by using instance variables (well, >>> they are, but not the way you'd expect). >>> >>> If I were doing it, I would implement Structs so that there was a >>> one-to-one correspondence between members and instance variables. >>> Then this wouldn't be an issue. >> >> >> What if you wanted to add methods to the class, or one or more >> instances, that used instance variables in a non-member/attr-like way? >> It seems arbitrary to decide that Structs can't or shouldn't do that. >> > > Granted, but that's the opposite problem from the one I > have fought. If I understand you. > > I didn't really mean one-to-one necessarily. > > But what I have wished for is the ability to add methods that > referenced the members as normal instance vars (or attributes). > > For example, if you have a member named "alpha" you access it > from the outside just like any accessor. That leads you (me) > to believe that it corresponds to an instance var @alpha (as if > we had said attr_accessor :alpha). But it doesn't. > > Some people (read: me) have incorrectly assumed that Struct is > "shorthand squared" for defining a class, an initialize, and > a bunch of accessors. But the behavior is different. > > Clear? Yeah, I know, there is still some point on which you > disagree. ;) I'm just not sure where you would experience a need for that. What would that enable you to do that you can't do now? I'm thinking you could always use self.member = x instead of @member = x, in other methods, which is arguably a good idea anyway. Or are there other differences I'm not taking into account (between members and attr_*-style attributes)? David -- David A. Black dblack / wobblini.net