From: Robert Dober Date: 2007-01-14T18:50:55+09:00 Subject: Re: a most undangerous Hash#store! ------=_Part_65563_30923764.1168768253676 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 1/13/07, Wilson Bilkovich wrote: > > On 1/13/07, Robert Dober wrote: > > On 1/13/07, Martin DeMello wrote: > > > > > > On 1/13/07, Mauricio Fernandez wrote: > > > > > > > > Do you feel that store_{once,new,unique} is too long? > > > > (I have a slight preference for "once"; "unique" seems a bit > puzzling > > > since it > > > > seems to refer to the key, which is always unique) > > > > > > Even 'store_once' seems to refer to the value rather than the pair, > > > which is why I like "underlay" - it suggests that if there is > > > something already in the hash, it will mask the value you are trying > > > to add. > > Can we please just agree to write: > hash[key] = value unless hash.key?(key) > I mean.. how often do you do this? I think it is clear that I would like to have this feature so sorry for replying anyway. This would be more than a convenience method it would be autodocumenting Hash even better, it would make its API clearer. Somebody was saying in this thread, why do you not write hash[key] ||= value you and I know better of course but if one has to read code to see hash[key]= value unless hash.key? key one could think poor guy he does not even know about the "hash[key] ||= value" idiom. OTH if in rdoc one saw Hash#insert_once(key, value) sets value only if key is not in the hash already, pleas note that this is not the same as hash[key] ||= value as... one would probably believe, no? Cheers Robert -- "The best way to predict the future is to invent it." - Alan Kay ------=_Part_65563_30923764.1168768253676--