local Man = {}
Man.__index = Man
-- No overloads: a skipped argument is nil,
-- and or supplies the default
function Man.new(name, country)
return setmetatable({
name = name or "unknown",
country = country or "unknown",
}, Man)
end
local man1 = Man.new()
-- man1.name = unknown
-- man1.country = unknown
local man2 = Man.new("Vladimir")
-- man2.name = Vladimir
-- man2.country = unknown
-- Arguments are positional: nil skips one
local man3 = Man.new(nil, "Brazil")
-- man3.name = unknown
-- man3.country = Brazil
local man4 = Man.new("Vladimir", "Brazil")
-- man4.name = Vladimir
-- man4.country = Brazil
print("man1.name = " .. man1.name)
print("man1.country = " .. man1.country)
print("man2.name = " .. man2.name)
print("man2.country = " .. man2.country)
print("man3.name = " .. man3.name)
print("man3.country = " .. man3.country)
print("man4.name = " .. man4.name)
print("man4.country = " .. man4.country)