Optional parameter values

Functions

-- No default values: an omitted argument is nil,
-- and "or" supplies the default
local function say_goodbye(message)
  message = message or "Goodbye!"
  print(message)
end

-- prints Goodbye!
say_goodbye()
-- prints see you
say_goodbye("see you")

-- Trap: "or" replaces false too, not only nil
local function set_loud(loud)
  loud = loud or true
  return loud
end

local loud = set_loud(false)
-- loud = true

-- Compare with nil to keep false
local function set_quiet(quiet)
  if quiet == nil then
    quiet = true
  end
  return quiet
end

local quiet = set_quiet(false)
-- quiet = false
-- An omitted argument still gets the default
local by_default = set_quiet()
-- by_default = true

print("loud = " .. tostring(loud))
print("quiet = " .. tostring(quiet))
print("by_default = " .. tostring(by_default))