From: Morton Goldberg Date: 2006-08-25T10:38:37+09:00 Subject: Re: That's Ruby, Virginia! Your code only works in irb. You get an error, as you should, if you run it 'real' Ruby. In irb 'array_101' gets added to Array. That's the only reason 'a.array_101' doesn't produce an error. In "real" Ruby, the following produces your result, as it should. #! /usr/bin/ruby -w class Array def array_101 for i in [0...length] p self[i] ### prints the array because i = 0...length, not 0. puts "#{i} => #{self[i]}" end end end a = %w[a s d] a.array_101 ["a", "s", "d"] 0...3 => asd The only thing I don't understand is why 'array_101' gets added to Array in irb. Regards, Morton On Aug 24, 2006, at 12:57 PM, Henry Savr wrote: > Well, you wrote a great Array Analyzer > Here it is: > > def array_101 > for i in [0 ... self.length] > puts "#{i} => #{self[i]}" > end > end > > And prepared the following array for test: > > a = ['a','s','d'] > > What do you think, it will print? > > Yeeees, you are right. > And the answer is... > > 0...3 => asd > > :-))))))))) > > try it at home: > > irb(main):001:0> def array_101 > irb(main):002:1> for i in [0 ... self.length] > irb(main):003:2> puts "#{i} => #{self[i]}" > irb(main):004:2> end > irb(main):005:1> end > => nil > irb(main):006:0> a = ['a','s','d'] > => ["a", "s", "d"] > irb(main):007:0> a.array_101 > 0...3 => asd > => [0...3] > ;-)