-- 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))