# Problem with return value

**URL:** <https://www.ruby-forum.com/t/problem-with-return-value/192833>\
**Category:** Ruby\
**Created:** [August 6, 2010, 6:23pm UTC](https://www.ruby-forum.com/t/problem-with-return-value/192833 "2010-08-06T18:23:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![amiref](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/41988e/32.png) [@amiref](https://www.ruby-forum.com/u/amiref)\
**Post date:** [August 6, 2010, 6:23pm UTC](https://www.ruby-forum.com/t/problem-with-return-value/192833/1 "2010-08-06T18:23:06Z")

</div>

## Hi In this code :

def test\_method(name)  
puts name  
3+5  
end

## return\_value = test\_method(“James”) puts return\_value

why when the last statement executed , “puts” does not return “nil” and  
return 8?

---

<div class="post-metadata">

**Author:** ![amiref](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/41988e/32.png) [@amiref](https://www.ruby-forum.com/u/amiref)\
**Post date:** [August 6, 2010, 6:37pm UTC](https://www.ruby-forum.com/t/problem-with-return-value/192833/2 "2010-08-06T18:37:49Z")

</div>

On 06/08/2010 17:23, Amir E. wrote:

> ## return\_value = test\_method(“James”) puts return\_value
> 
> why when the last statement executed , “puts” does not return “nil” and  
> return 8?

Because in Ruby, the last statement executed in a block is the block’s  
value. That goes for your test\_method’s return value, and any other  
type of block you use.

---

<div class="post-metadata">

**Author:** ![amiref](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/41988e/32.png) [@amiref](https://www.ruby-forum.com/u/amiref)\
**Post date:** [August 6, 2010, 8:17pm UTC](https://www.ruby-forum.com/t/problem-with-return-value/192833/3 "2010-08-06T20:17:56Z")

</div>

On Aug 6, 2010, at 12:27 PM, Matthew B. wrote:

> > 
> 
> any other type of block you use.
> 
> –  
> Matthew B.

Actually, 3+5 is the last statement in your test\_method. Are you  
surprised that the value is 8?

-Rob

Rob B.  
removed\_email\_address@domain.invalid [http://AgileConsultingLLC.com/](http://AgileConsultingLLC.com/)  
removed\_email\_address@domain.invalid [http://GaslightSoftware.com/](http://GaslightSoftware.com/)

---

<div class="post-metadata">

**Author:** ![amiref](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/41988e/32.png) [@amiref](https://www.ruby-forum.com/u/amiref)\
**Post date:** [August 6, 2010, 9:49pm UTC](https://www.ruby-forum.com/t/problem-with-return-value/192833/4 "2010-08-06T21:49:52Z")

</div>

On Fri, Aug 6, 2010 at 12:23 PM, Amir E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> why when the last statement executed , “puts” does not return “nil” and  
> return 8?

irb(main):001:0\> def test\_method(name)  
irb(main):002:1\> rv = puts(name)  
irb(main):003:1\> 3+5  
irb(main):004:1\> rv  
irb(main):005:1\> end  
=\> nil  
irb(main):006:0\> return\_value = test\_method(“James”)  
James  
=\> nil  
irb(main):007:0\> puts return\_value  
nil  
=\> nil
