# Why is this returning nil?

**URL:** <https://www.ruby-forum.com/t/why-is-this-returning-nil/64512>\
**Category:** Ruby\
**Created:** [August 9, 2006, 6:26pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512 "2006-08-09T18:26:04Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:26pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/1 "2006-08-09T18:26:04Z")

</div>

class User

```
def initialize(level, status)
    @level = level
    @status = status
end

def finda
    if @status == "active"
        print #{@level}
    else
    puts "user not exist"
    end
end

```

end

user1 = User.new(1, “active”)  
user2 = User.new(1, “inactive”)  
user3 = User.new(2, “active”)  
user4 = User.new(3, “inactive”)

user1.finda

Something wrong …not sure  
TIA  
Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:29pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/2 "2006-08-09T18:29:05Z")

</div>

> > > > > “D” == Dark A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

D\> if @status == “active”  
D\> print #{@level}

```
           print @level

```

outside a string, # is a comment 🙂

D\> else

Guy Decoux

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:32pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/3 "2006-08-09T18:32:08Z")

</div>

On 09/08/06, Dark A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> else
> 
> ```
> 
> user1.finda
> 
> Something wrong …not sure  
> TIA  
> Stuart

print and puts return nil. As they are the last commands executed  
their return statuses are returned.

Farrel

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:32pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/4 "2006-08-09T18:32:08Z")

</div>

On Aug 9, 2006, at 17:23, Dark A. wrote:

> ```
> else
> 
> ```
> 
> user1.finda
> 
> Something wrong …not sure  
> TIA  
> Stuart

Because methods return the value of the last statement. In this  
case, both ‘puts’ and ‘print’ return nil, the actual output to the  
screen is separate from the return value:

print “Hello\n”  
Hello  
=\> nil  
puts “Hello”  
Hello  
=\> nil

My guess/advice would be to return the actual string you’re  
eventually going to output, and deal with the actual output elsewhere  
in the code.

matthew smillie.

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:32pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/5 "2006-08-09T18:32:08Z")

</div>

2 things…

1. Change “print #{@level}” to “print @level”
2. print and puts both return nil

Mark

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:35pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/6 "2006-08-09T18:35:08Z")

</div>

Hello!

You forgot quotes in line print #{@level}. Change it to “print  
#{@level}” please.

2006/8/9, Dark A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:47pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/7 "2006-08-09T18:47:09Z")

</div>

Wow…lot of answers, thanks to all.  
It works and I’ve learned a few things in the process.

Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 9, 2006, 6:41pm UTC](https://www.ruby-forum.com/t/why-is-this-returning-nil/64512/8 "2006-08-09T18:41:09Z")

</div>

Oh. Some mistake. Change it to

print " #{@level}"

of course 🙂

2006/8/9, Alexey V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
