From: mental@... Date: 2006-01-25T08:50:08+09:00 Subject: Re: LazyLoad Quoting Erik Veenstra : > Yeah, true. Bad example. The original code (the branches) uses > a common method "load" which sets both properties. If one of > them is used, the other gets set as well. No problem there. Actually there is a problem the moment such an instance variable is assigned to another variable or passed as a parameter. The LazyLoad instance escapes the block's control. class Example def initialize @prop = LazyLoad.new { @prop = [1, 2, 3] } end def show3 helper( @prop ) end def helper( arr ) p arr.pop p arr.pop p arr.pop end end ex = Example.new ex.show3 What would you expect this program to output? What actually happens? -mental