From: Justin Collins Date: 2007-11-20T09:37:06+09:00 Subject: Re: Assignment without attr= Greg Willits wrote: > Not even sure what to call this for the thread subject > > I want to create a class which is a simple packed set of digits (as a > string) as the one and only attribute of the class. There will be > several methods to extract chunks from and format this string, but > there's only the one attribute. > > For the life of me I can't figure out how to to populate the dang this > to start with, without have to go through an attribute. If it were a > normal multi-attribute object, I'm fine, but in light of there only > being one attribute, I'm trying to work with it a different way. Maybe > I'm just going about it all wrong to start with? > > The essentials: > > class PackedNumber > def initialize > @packedNumber > end > > def methodX > ... > end > > def methodY > ... > end > end > > So, I'd want to work with it like this: > whatever = PackedNumber.new('12345') > def initialize(num = nil) @packedNumber = num end > Or > whatever = PackedNumber.new > whatever = '12345' # but I don't want whatever to be String > > I don't think you can do this. > I'm trying to avoid the obvious, and maybe this is what is not possible > whatever.packedNumber = '12345' > > I tried creating a method just for = but that didn't fly > > def =(chars) > @packedNumber = chars > end > > But you could do def set(chars) @packedNumber = chars end whatever = PackedNumber.new whatever.set '12345' or if you want it even shorter, less 'method-call-like' def [] num @packedNumber = num end whatever['12345'] -Justin