From: "Peña, Botp" Date: 2008-04-29T18:22:55+09:00 Subject: Re: Array#first is not Array#[0] From: Peña, Botp [mailto:botp@delmonte-phil.com] # From: Fredrik [mailto:fredjoha@gmail.com] # # irb> g.size # # => "Here you go: 3" # # That's a strange size :) # # So this solution solves some problems but creates new ones # instead... # you wanted to put text on all ops # so even # irb> g.last # => "Here you go: 3" # is already strange, right? # my suggestion is if you just want to view some output w text, # just wrapped it in a text, # like so, # puts "Here you go: #{g.last}" ok, how about combining what we want, ie, put the text yet still returning the object, so class MyArray < Array Array.instance_methods.each do |m| define_method(m) do r=super puts "Here you go: #{r}" r end end end #=> ... g=MyArray.new [1,2,3] Here you go: [1, 2, 3] #=> [1, 2, 3] g[0] Here you go: 1 #=> 1 g.first Here you go: 1 #=> 1 g.last Here you go: 3 #=> 3 g.size Here you go: 3 #=> 3 puts "size is: #{g.size}" Here you go: 3 size is: 3 #=> nil is that ok? kind regards -botp