Method Arguments
Keyword Arguments
Keyword arguments name each value at the call site.
keyword argument
Keyword arguments make method calls clearer when several values are passed.
Keyword Arguments
keyword_arguments.rb
Replay: real traced execution (multi-file project)
def order_summary(item:, quantity:, urgent: false)
label = urgent ? "rush" : "standard"
"#{quantity} #{item} #{label}"
end
quantity = 2
summary = order_summary(item: "notebook", quantity: quantity, urgent: true)
puts "quantity=#{quantity}"
puts "summary=#{summary}"
def order_summary(item:, quantity:, urgent: false)
label = urgent ? "rush" : "standard"
"#{quantity} #{item} #{label}"
end
quantity = 1
summary = order_summary(item: "notebook", quantity: quantity, urgent: true)
puts "quantity=#{quantity}"
puts "summary=#{summary}"
def order_summary(item:, quantity:, urgent: false)
label = urgent ? "rush" : "standard"
"#{quantity} #{item} #{label}"
end
quantity = 4
summary = order_summary(item: "notebook", quantity: quantity, urgent: true)
puts "quantity=#{quantity}"
puts "summary=#{summary}"
quantity ← 2
6quantity→ 2 = 2 #@quantity=1, 47summary = order_summary(item: "notebook", quantity: quantity2, urgent: true)label ← rush
1def order_summary(item:, quantity:, urgent: false)2 label→ rush = urgenttrue ? "rush" : "standard"3 "#{quantity2} #{itemnotebook} #{labelrush}"4endsummary ← 2 notebook rush
6quantity = 2 #@quantity=1, 47summary→ 2 notebook rush = order_summary(item: "notebook", quantity: quantity2, urgent: true)89puts "quantity=#{quantity2}"10puts "summary=#{summary2 notebook rush}"outputquantity=2 summary=2 notebook rush
quantity ← 1
6quantity→ 1 = 17summary = order_summary(item: "notebook", quantity: quantity1, urgent: true)label ← rush
1def order_summary(item:, quantity:, urgent: false)2 label→ rush = urgenttrue ? "rush" : "standard"3 "#{quantity1} #{itemnotebook} #{labelrush}"4endsummary ← 1 notebook rush
6quantity = 17summary→ 1 notebook rush = order_summary(item: "notebook", quantity: quantity1, urgent: true)89puts "quantity=#{quantity1}"10puts "summary=#{summary1 notebook rush}"outputquantity=1 summary=1 notebook rush
quantity ← 4
6quantity→ 4 = 47summary = order_summary(item: "notebook", quantity: quantity4, urgent: true)label ← rush
1def order_summary(item:, quantity:, urgent: false)2 label→ rush = urgenttrue ? "rush" : "standard"3 "#{quantity4} #{itemnotebook} #{labelrush}"4endsummary ← 4 notebook rush
6quantity = 47summary→ 4 notebook rush = order_summary(item: "notebook", quantity: quantity4, urgent: true)89puts "quantity=#{quantity4}"10puts "summary=#{summary4 notebook rush}"outputquantity=4 summary=4 notebook rush