From: Robert Klemme Date: 2007-05-21T03:10:08+09:00 Subject: Re: "Crystallizing" Objects On 20.05.2007 18:12, fud wrote: >> [growinghash.rb]require 'delegate' >> >> class GrowingHash < DelegateClass(Hash) >> def initialize(*a,&b) >> super(Hash === a[0] ? a[0] : Hash.new(*a,&b)) >> end >> >> def store(k,v) >> raise ArgumentError, "Key already set: #{k.inspect}" if key? k >> super >> end >> >> alias []= store >> >> def set_if_unset(k,v=nil) >> store(k, block_given? ? yield : v) unless key? k >> end >> end > > Is this intended to be thread-safe? Of course not. (see my posting) Kind regards robert