# Array#push

**URL:** <https://www.ruby-forum.com/t/array-push/147285>\
**Category:** Ruby\
**Created:** [August 30, 2008, 8:08am UTC](https://www.ruby-forum.com/t/array-push/147285 "2008-08-30T08:08:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rgreen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f04885/32.png) [@rgreen](https://www.ruby-forum.com/u/rgreen)\
**Post date:** [August 30, 2008, 8:08am UTC](https://www.ruby-forum.com/t/array-push/147285/1 "2008-08-30T08:08:06Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![rgreen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f04885/32.png) [@rgreen](https://www.ruby-forum.com/u/rgreen)\
**Post date:** [August 30, 2008, 8:20am UTC](https://www.ruby-forum.com/t/array-push/147285/2 "2008-08-30T08:20:23Z")

</div>

On Sat, Aug 30, 2008 at 3:02 PM, Ron G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 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”]

---

<div class="post-metadata">

**Author:** ![rgreen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f04885/32.png) [@rgreen](https://www.ruby-forum.com/u/rgreen)\
**Post date:** [August 30, 2008, 8:29am UTC](https://www.ruby-forum.com/t/array-push/147285/3 "2008-08-30T08:29:44Z")

</div>

I get it. Boy, was my stupid light lit or what?

---

<div class="post-metadata">

**Author:** ![rgreen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f04885/32.png) [@rgreen](https://www.ruby-forum.com/u/rgreen)\
**Post date:** [August 30, 2008, 4:35pm UTC](https://www.ruby-forum.com/t/array-push/147285/4 "2008-08-30T16:35:20Z")

</div>

Ron G. wrote:

> Why is x =13 instead of 3?

Why not this?

def full\_name  
[@first\_name, @middle\_name, @last\_name].compact.join(’ ')  
end
