Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different parse priorities when argument is Hash

Tags:

ruby

Two cases:

ruby-1.9.2-p180 > puts {}.class

 => NilClass

and

ruby-1.9.2-p180 > puts "a".class
String
 => nil

It looks like puts {}.class is equivalent to (puts {}).class and puts "a".class is equivalent to puts ("a".class). Why is it so?

like image 879
Edvinas Bartkus Avatar asked Nov 18 '25 09:11

Edvinas Bartkus


1 Answers

It's treating {} as a block, not as a hash. RubyInside says so, and also shows how you can prove it using Ripper.

like image 164
Andrew Grimm Avatar answered Nov 20 '25 14:11

Andrew Grimm



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!