# Problem with hash in function

**URL:** <https://www.ruby-forum.com/t/problem-with-hash-in-function/142665>\
**Category:** Ruby\
**Created:** [July 10, 2008, 6:52am UTC](https://www.ruby-forum.com/t/problem-with-hash-in-function/142665 "2008-07-10T06:52:26Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![skaverat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/779978/32.png) [@skaverat](https://www.ruby-forum.com/u/skaverat)\
**Post date:** [July 10, 2008, 6:52am UTC](https://www.ruby-forum.com/t/problem-with-hash-in-function/142665/1 "2008-07-10T06:52:26Z")

</div>

Somehow I’m missing something really basic. Why is following function  
now working?

def foobar(args)  
puts args.id  
end

foobar ({:id =\> “MyID”})  
#=\> some random number (e.g. -616990888)

---

<div class="post-metadata">

**Author:** ![skaverat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/779978/32.png) [@skaverat](https://www.ruby-forum.com/u/skaverat)\
**Post date:** [July 10, 2008, 7:30am UTC](https://www.ruby-forum.com/t/problem-with-hash-in-function/142665/2 "2008-07-10T07:30:00Z")

</div>

args.id will return your object\_id. I am not sure that’s what you  
want. You want:

puts args[:id]

Jayanth

---

<div class="post-metadata">

**Author:** ![skaverat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/779978/32.png) [@skaverat](https://www.ruby-forum.com/u/skaverat)\
**Post date:** [July 10, 2008, 7:31am UTC](https://www.ruby-forum.com/t/problem-with-hash-in-function/142665/3 "2008-07-10T07:31:11Z")

</div>

On Jul 10, 2008, at 12:48 AM, Skave R. wrote:

> Somehow I’m missing something really basic. Why is following function  
> now working?
> 
> def foobar(args)  
> puts args.id  
> end
> 
> foobar ({:id =\> “MyID”})  
> #=\> some random number (e.g. -616990888)

Are you expecting foobar({:id =\> “MyID”}) to return “MyID”? args.id  
will return the object id of args (though this is deprecated. I  
suspect you want args[:id] instead.

> > def foobar(args)  
> > puts args.id  
> > end  
> > =\> nil
> 
> > foobar ({:id =\> “MyID”})  
> > (irb):2: warning: Object#id will be deprecated; use Object#object\_id  
> > 1780410  
> > =\> nil
> 
> > def foobad(args)  
> > puts args[:id]  
> > end  
> > =\> nil
> 
> > foobad({:id =\> “MyID”})  
> > MyID  
> > =\> nil

Michael G.  
grzm seespotcode net

---

<div class="post-metadata">

**Author:** ![skaverat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/779978/32.png) [@skaverat](https://www.ruby-forum.com/u/skaverat)\
**Post date:** [July 10, 2008, 7:33am UTC](https://www.ruby-forum.com/t/problem-with-hash-in-function/142665/4 "2008-07-10T07:33:48Z")

</div>

thanks, I knew I missed womething.

Works fine now
