Skip to content

Instantly share code, notes, and snippets.

@edgar
Forked from codesnik/gist:2035501
Created March 8, 2013 17:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edgar/5118126 to your computer and use it in GitHub Desktop.
Save edgar/5118126 to your computer and use it in GitHub Desktop.
# lvalue slicing of Hashes
# hash = {foo: 1, bar: 2, baz: 3}
# hash[:foo, :bar] == [1, 2]
#
# hash[:foo, 3] = 6,7
# hash == {foo: 6, bar: 2, baz: 3, 3 => 7}
#
# strange enough, I haven't noticed any slowdown on rails startup.
class Hash
alias oldbracket []
def [](*values)
if values.size == 1
oldbracket(*values)
else
values_at(*values)
end
end
alias oldbracketassign []=
def []=(*args)
if args.size == 2
oldbracketassign(*args)
else
vals = args.pop
args.zip(vals) do |key, val|
oldbracketassign key, val
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment