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