Skip to content

Instantly share code, notes, and snippets.

@vaskaloidis
Created August 11, 2018 22:05
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 vaskaloidis/27cdb1baed3bc5fd02db2a8eae93e58b to your computer and use it in GitHub Desktop.
Save vaskaloidis/27cdb1baed3bc5fd02db2a8eae93e58b to your computer and use it in GitHub Desktop.
Hash Arguments Notes
# Hash Method Arguments
def foo(b: 2, c: 3, **args)
puts b #=> 2
puts args #=> {a: 1, d: 4}
end
# Usage: foo(a: 1, b: 2, c: 3, d: 4)
# Explination:
# Old way of hash arguments
def foo(args)
puts args[:a]
puts args[:b]
end
foo(a: 1, b: 2)
#=> 1
#=> 2
# Default arguments and mixing ordinary arguments with hashes
def foo(a, args = {})
defaults = {b: 2, c: 3}
args = defaults.merge(args)
puts a
puts args
end
foo(1)
#=> 1
#=> {b: 2, c: 3}
# Even better than default arguments, is keyword arguments (no merging default arguments).
# Mix them with Array arguments:
def foo(b: 2, c: 3, **args)
puts b
puts c
puts args
end
foo(a: 1, b: 2, c: 3, d: 4)
#=> 2
#=> 3
#=> {a: 1, d: 4}
# Optional Args:
def foo(b: 2, c: 3, **args)
puts b
puts c
puts args
end
foo(a: 1, b: 2, c: 3, d: 4)
#=> 2
#=> 3
#=> {a: 1, d: 4}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment