forked from everaldo/ruby-em-100-exemplos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path071_gerencie_valores_default_de_argumentos_com_merge.rb
61 lines (52 loc) · 1.43 KB
/
071_gerencie_valores_default_de_argumentos_com_merge.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 09/06/2016 - Everaldo Gomes - everaldo.gomes@gmail.com
#
# 071 - Gerencie valores default de argumentos com merge
#
#
# O método merge permite mesclar duas hashes.
# Ele pode ser muito útil ao gerenciar argumentos default de
# um método.
#
#
# Os valores da hash passada como argumento tem precedência
# sobre os valores da hash original.
#
# merge retorna uma nova hash.
#
# Use merge! para aplicar as alterações na própria hash
#
#
def pagamento(args = {})
default_args = {
forma_pagamento: :dinheiro,
desconto: 0.0,
valor: 0
}
args = default_args.merge(args)
puts args
end
puts pagamento(forma_pagamento: :cartao, valor: 100, desconto: 0.1)
puts pagamento(valor: 100, desconto: 0.1)
puts pagamento(forma_pagamento: :cartao, desconto: 0.1) # => nil
puts pagamento() # => nil
puts pagamento(forma_pagamento: :cartao) # => nil
# #1 Nenhum valor é afetado
#
# #2 dinheiro é adicionado como forma de pagamento padrão
#
# #3 o valor 0 é adicionado como valor padrão
#
# #4 dinheiro, desconto e forma de pagamento são adicionados
#
#
# #5 desconto 0.0 é adicionado como valor padrão
# >> {:forma_pagamento=>:cartao, :desconto=>0.1, :valor=>100}
# >>
# >> {:forma_pagamento=>:dinheiro, :desconto=>0.1, :valor=>100}
# >>
# >> {:forma_pagamento=>:cartao, :desconto=>0.1, :valor=>0}
# >>
# >> {:forma_pagamento=>:dinheiro, :desconto=>0.0, :valor=>0}
# >>
# >> {:forma_pagamento=>:cartao, :desconto=>0.0, :valor=>0}
# >>