On Tue, Feb 18, 2003 at 06:59:48AM +0900, Tom Sawyer wrote: > i also tried > > def pass_a_block > { |i| puts i } > end > > arr = [1, 2, 3] > arr.each do pass_a_block This looks very similar: def pass_a_block proc { |i| puts i } end arr = [1, 2, 3] arr.each &pass_a_block But that's probably not what you want. It's not the method, it's a Proc object (which happens to be the returned object from the method) that's being iterated. You can use a local variable instead of a method: pass_a_block = proc { |i| puts i } arr = [1, 2, 3] arr.each &pass_a_block B.