# Isset kinda function

**URL:** <https://www.ruby-forum.com/t/isset-kinda-function/62477>\
**Category:** Ruby\
**Created:** [June 5, 2006, 12:31pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477 "2006-06-05T12:31:07Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 12:31pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/1 "2006-06-05T12:31:07Z")

</div>

Looking for something like PHP’s isset.

---

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 12:56pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/2 "2006-06-05T12:56:38Z")

</div>

Alex Copot wrote:

> Looking for something like PHP’s isset.

And something like print\_r to display an array.

---

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 1:26pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/3 "2006-06-05T13:26:21Z")

</div>

Alex Copot wrote:

> Looking for something like PHP’s isset.

defined?() will work, but usually you won’t need it. Depending on what  
you are trying to do there likely is better solutions.

---

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 1:28pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/4 "2006-06-05T13:28:25Z")

</div>

Well, I have something like this

```
if session[:cart][product_id] > 1
  session[:cart][product_id] = session[:cart][product_id] + 1
else
  session[:cart][product_id] = 1
end

```

But it doesn’t work. I get this.

You have a nil object when you didn’t expect it!  
You might have expected an instance of Array.  
The error occured while evaluating nil.[]

---

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 1:38pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/5 "2006-06-05T13:38:41Z")

</div>

Alex Copot wrote:

> You have a nil object when you didn’t expect it!  
> You might have expected an instance of Array.  
> The error occured while evaluating nil.[]

Seems like session[:cart] is nil. You can just do

if session[:cart] then  
…  
end

And things will work correctly.

What you proably want is to initialize session[:cart] to an object,  
though. You can do that like:

session[:cart] ||= default

Hope this helps.

---

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 1:39pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/6 "2006-06-05T13:39:35Z")

</div>

Thank you very much.

Florian GroÃ? wrote:

> Alex Copot wrote:
> 
> > You have a nil object when you didn’t expect it!  
> > You might have expected an instance of Array.  
> > The error occured while evaluating nil.[]
> 
> Seems like session[:cart] is nil. You can just do
> 
> if session[:cart] then  
> …  
> end
> 
> And things will work correctly.
> 
> What you proably want is to initialize session[:cart] to an object,  
> though. You can do that like:
> 
> session[:cart] ||= default
> 
> Hope this helps.

---

<div class="post-metadata">

**Author:** ![copot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/49beb7/32.png) [@copot](https://www.ruby-forum.com/u/copot)\
**Post date:** [June 5, 2006, 1:32pm UTC](https://www.ruby-forum.com/t/isset-kinda-function/62477/7 "2006-06-05T13:32:36Z")

</div>

Alex Copot wrote:

> And something like print\_r to display an array.

Try p(obj) for debug output. You can also do this:

require ‘yaml’; y(obj)
