Keyword arguments name each value at the call site.

keyword argument Keyword arguments make method calls clearer when several values are passed.

Keyword Arguments

quantity
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}"
  1. quantity ← 2

    6quantity→ 2 = 2  #@quantity=1, 47summary = order_summary(item: "notebook", quantity: quantity2, urgent: true)
  2. label ← rush

    1def order_summary(item:, quantity:, urgent: false)2  label→ rush = urgenttrue ? "rush" : "standard"3  "#{quantity2} #{itemnotebook} #{labelrush}"4end
  3. summary ← 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
  1. quantity ← 1

    6quantity→ 1 = 17summary = order_summary(item: "notebook", quantity: quantity1, urgent: true)
  2. label ← rush

    1def order_summary(item:, quantity:, urgent: false)2  label→ rush = urgenttrue ? "rush" : "standard"3  "#{quantity1} #{itemnotebook} #{labelrush}"4end
  3. summary ← 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
  1. quantity ← 4

    6quantity→ 4 = 47summary = order_summary(item: "notebook", quantity: quantity4, urgent: true)
  2. label ← rush

    1def order_summary(item:, quantity:, urgent: false)2  label→ rush = urgenttrue ? "rush" : "standard"3  "#{quantity4} #{itemnotebook} #{labelrush}"4end
  3. summary ← 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