Peng Zuo wrote:
> Hi,I'm using ruby 1.87. this problem seems to be the block context bug for
> 1.8x, in the results array, I always got the same value, which is the last
> return value of the iteration .
> I've got an object, which has multiple states. when I call each_state, I'm
> actually changing the state.
> 
> results = []
> an_object.each_state do |the_object|
>     #some manipulations
>     results << the_object
> end
> 
> the each_state method looks like:
> 
> def each_state
>     #blah blah, change the current state
>     yield(self)   # I also tried self.dup, but it didnt work either.
> end

I'm guessing what you want is for results[i] to be a snapshot of the 
object as it is in the i-th state?

If dup doesn't work, maybe your object has some other objects attached 
to it in which you are storing something? In that case, try a deep copy:

Marshal.load(Marshal.dump(self))

-- 
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407