Default argument values let callers omit common options.

default argument A default argument is used when the caller does not provide a value for that parameter.

Default Arguments

prefix
default_arguments.rb
Replay: real traced execution (multi-file project)
def greeting(name, prefix = "Hello")
  "#{prefix}, #{name}"
end

prefix = "Hello"
name = "Ruby"

default_message = greeting(name)
custom_message = greeting(name, prefix)

puts "default=#{default_message}"
puts "custom=#{custom_message}"
def greeting(name, prefix = "Hello")
  "#{prefix}, #{name}"
end

prefix = "Hi"
name = "Ruby"

default_message = greeting(name)
custom_message = greeting(name, prefix)

puts "default=#{default_message}"
puts "custom=#{custom_message}"
def greeting(name, prefix = "Hello")
  "#{prefix}, #{name}"
end

prefix = "Welcome"
name = "Ruby"

default_message = greeting(name)
custom_message = greeting(name, prefix)

puts "default=#{default_message}"
puts "custom=#{custom_message}"
  1. prefix ← Hello, name ← Ruby, default_message ← Hello, Ruby, custom_message ← Hello, Ruby

    5prefix→ Hello = "Hello"  #@prefix="Hi", "Welcome"6name→ Ruby = "Ruby"78default_message→ Hello, Ruby = greeting(nameRuby)9custom_message→ Hello, Ruby = greeting(nameRuby, prefixHello)1011puts "default=#{default_messageHello, Ruby}"12puts "custom=#{custom_messageHello, Ruby}"
    outputdefault=Hello, Ruby
    custom=Hello, Ruby
  1. prefix ← Hi, name ← Ruby, default_message ← Hello, Ruby, custom_message ← Hi, Ruby

    5prefix→ Hi = "Hi"6name→ Ruby = "Ruby"78default_message→ Hello, Ruby = greeting(nameRuby)9custom_message→ Hi, Ruby = greeting(nameRuby, prefixHi)1011puts "default=#{default_messageHello, Ruby}"12puts "custom=#{custom_messageHi, Ruby}"
    outputdefault=Hello, Ruby
    custom=Hi, Ruby
  1. prefix ← Welcome, name ← Ruby, default_message ← Hello, Ruby, custom_message ← Welcome, Ruby

    5prefix→ Welcome = "Welcome"6name→ Ruby = "Ruby"78default_message→ Hello, Ruby = greeting(nameRuby)9custom_message→ Welcome, Ruby = greeting(nameRuby, prefixWelcome)1011puts "default=#{default_messageHello, Ruby}"12puts "custom=#{custom_messageWelcome, Ruby}"
    outputdefault=Hello, Ruby
    custom=Welcome, Ruby