Skip to content

Instantly share code, notes, and snippets.

@hukl
Created June 30, 2010 20:34
Show Gist options
  • Save hukl/459185 to your computer and use it in GitHub Desktop.
Save hukl/459185 to your computer and use it in GitHub Desktop.
class CrazyHash < Hash
def initialize init_hash
super.merge! init_hash
end
def to_s
"do something different and important so the literal {} wont work"
end
end
f = CrazyHash.new( :b => "C" )
puts f.inspect
=> {:b=>"C"}
@handtwerk
Copy link

Hmm, I don't get it. What's the point?

@hukl
Copy link
Author

hukl commented Jun 30, 2010

@handtwerk that you can't say Hash.new( :foo => "bar" )

by overloading #initialize that way - you can. and that you can overload it that easy is just awesome - at least to me

@plukevdh
Copy link

so named paramters type functionality...

@hukl
Copy link
Author

hukl commented Jun 30, 2010

@plukevdh - could you elaborate ? ;)

@handtwerk
Copy link

I see, that's neat. Go Ruby!

@plukevdh
Copy link

plukevdh commented Jul 8, 2010

@hukl kinda like what Obj-C has.

@hukl
Copy link
Author

hukl commented Jul 8, 2010

Uhm yeah - rubyists use hashes for named arguments all the time but in this gist it is not the point ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment