From: Dave Howell Date: 2006-01-27T06:18:18+09:00 Subject: Re: Memoization? On Jan 26, 2006, at 12:59, John Carter wrote: > OK, so this trick cannot be used everywhere. > > Suppose @@memo is a brand spanking new empty Hash object. > > What does @@memo["pink"] return? > > By default it returns nil. > > But you can make it return whatever you damn well feel like. > > @@memo = Hash.new{|hash,key| hash[key] = Car.new(key)} > > @@memo["pink"] > > Will say, oo, I have no "pink" element, I better go off and make one > then, fortunately I have a block on my "new" so I know how to do that. > > ps. > > If everybody in your country had a pink car, what would you have? Ha ha. Except that if everybody in my country had a Car.create_car("pink") car, then the entire country would have exactly one car. I can't figure out what it's good for; any example I can think of in my head is just a complicated way of doing something simple. Either "well, I'll just keep the object around in the first place," or "no, I would have to have my very OWN pink car, not be FlexCar-ing it with other parts of the program"