Advanced parameters
Category:
Parameters made of hash
Using fetch
with default values.
def stats(args)
health = args.fetch(:health, 10)
mana = args.fetch(:mana, 5)
attack = args.fetch(:attack, 5)
defense = args.fetch(:defense, 5)
puts "Health: #{health}, Mana: #{mana}, Attack: #{attack}, Defense: #{defense}."
end
stats(attack: 30)
It prints: Health: 10, Mana: 5, Attack: 30, Defense: 5.
Using default arguments and merge
method.
def stats(args)
defaults = {
health: 10,
mana: 5,
attack: 5,
defense: 5
}
args = defaults.merge args
health = args[:health]
mana = args[:mana]
attack = args[:attack]
defense = args[:defense]
puts "Health: #{health}, Mana: #{mana}, Attack: #{attack}, Defense: #{defense}."
end
stats(health: 30)
It prints: Health: 30, Mana: 5, Attack: 5, Defense: 5.
Keyword arguments (since Ruby 2.0)
def stats(health: 10, mana: 5, attack: 5, defense: 5)
puts "Health: #{health}, Mana: #{mana}, Attack: #{attack}, Defense: #{defense}."
end
stats(mana: 20)
It prints: Health: 10, Mana: 20, Attack: 5, Defense: 5.