无构造函数

类型初始化 / 类

-- The class holds the defaults for all objects
local Phone = {model = "unknown"}
Phone.__index = Phone

local Employee = {first_name = "", last_name = ""}
Employee.__index = Employee

-- No constructor: attach the class to a table
local nokia_phone = setmetatable({}, Phone)
local iphone18 = setmetatable({}, Phone)
-- A missing field is found in the class
local default_model = nokia_phone.model
-- default_model = unknown

-- Assigning writes into the object only
nokia_phone.model = "Nokia 6610"
iphone18.model = "iPhone 18"
local nokia_model = nokia_phone.model
-- nokia_model = Nokia 6610

local kim = setmetatable({}, Employee)
-- No default for personal_phone: nil
local no_phone = kim.personal_phone
-- no_phone = nil

kim.first_name = "Victoria"
kim.last_name = "Kim"
kim.personal_phone = iphone18
local kim_model = kim.personal_phone.model
-- kim_model = iPhone 18

print("default_model = " .. default_model)
print("nokia_model = " .. nokia_model)
print("no_phone = " .. tostring(no_phone))
print("kim_model = " .. kim_model)