Created
August 11, 2018 22:05
-
-
Save vaskaloidis/27cdb1baed3bc5fd02db2a8eae93e58b to your computer and use it in GitHub Desktop.
Hash Arguments Notes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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