From: Rong Date: 2008-08-30T15:21:58+09:00 Subject: Re: array#push I get it. Boy, was my stupid light lit or what? On Aug 30, 1:14 am, "Michael Fellinger" wrote: > On Sat, Aug 30, 2008 at 3:02 PM, Ron Green wrote: > > Given the foloowing code: > > class Person > >  attr_accessor :first_name, :middle_name, :last_name > >  def whole_name > >    n = first_name + " " > >    n << "#{middle_name} " if middle_name > >    n << last_name > >    return n.size > >  end > > end > > > m = Person.new > > m.first_name = "Sam" > > m.middle_name = "Ray" > > m.last_name = "Smith" > > > x = m.whole_name > > > puts x > > > Why is x =13 instead of 3? > > You are asking about Array#push, yet not using it. If you would try to > replace '<<' with '.push' you would see that instead you are handling > Strings. > > irb(main):001:0> a = 'Sam' > => "Sam" > irb(main):002:0> a << ' Ray' > => "Sam Ray" > irb(main):003:0> a = ['Sam'] > => ["Sam"] > irb(main):004:0> a << 'Ray' > => ["Sam", "Ray"] > irb(main):005:0> a = 'Sam' > => "Sam" > irb(main):006:0> a.push('Ray') > NoMethodError: undefined method `push' for "Sam":String >         from (irb):6 > irb(main):007:0> a = ['Sam'] > => ["Sam"] > irb(main):008:0> a.push('Ray') > => ["Sam", "Ray"] > > > > > -- > > ron.gr...@gmail.com