Lua程序设计(一)面向对象概念介绍

 

完整代码

复制代码
local mt = {}
mt.__add = function(t1,t2)
    print("两个Table 相加的时候会调用我")
end
local t1 = {}
local t2 = {}
-- 给两个table 设置新的元表,一个元表就是一个table的值
setmetatable(t1,mt) -- meta:元素
setmetatable(t2,mt)
-- 进行相加操作
local t = t1 + t2
print(t)

--[[输出结果
两个Table 相加的时候会调用我
nil
--]]
复制代码

 

 

 

完整代码

复制代码
-- 创建一个元表 (是创建一个类吗?)
local mt = {}
mt.__add = function(s1, s2)
    local result = ""
    if s1.sex == "boy" and s2.sex == "girl" then
        result = "一个男孩和一个女孩的家庭"
    elseif s1.sex == "girl" and s2.sex == "girl" then
        result = "两个女孩的家庭"
    else
        result = "未知孩子的家庭"
    end
    return result
end
-- 创建两个table,可以想象成是两个类的对象(实例化两个类)
local s1 = { name = "Per1", sex = "boy" }
local s2 = { name = "Per2", sex = "girl" }
-- 给两个table 设置新的元表,一个元表就是一个table的值
setmetatable(s1, mt)
setmetatable(s2, mt)
-- 进行加法操作
local result = s1 + s2
print(result)  -- 一个男孩和一个女孩的家庭
复制代码

 

复制代码
----------------------------------------------------------- Lua面向对象2
local t = {
    name = "Tinywan"
}
local mt = {
    __index = function(table,key)
        print("虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来"..key)
    end
}
setmetatable(t,mt)
print(t.name)
print(t.age)
--[[输出结果 Tinywan 虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来age nil --]]
复制代码

复制代码
----------------------------------------------------------- Lua面向对象2
local t = {
    name = "Tinywan"
}
local mt = {
    money = 808080
}
mt.__index = mt
setmetatable(t,mt)
print(t.money)
-- 输出结果 808080
复制代码

 

复制代码
----------------------------------------------------------- Lua面向对象2
local t = {
    name = "Tinywan"
}
local mt = {
    __index = {
        money = 909090
    }
}
setmetatable(t,mt)
print(t.money)
-- 输出结果 909090
复制代码

 

复制代码
----------------------------------------------------------- Lua面向对象2
local smartMan = {
    name = "Tinywan",
    age = 26,
    money = 800000,
    say_fun = function()
        print("Tinywan say 大家好")
    end
}

local t1 = {}
local t2 = {}
local mt = { __index = smartMan } -- __index 可以是一个函数,也可以是一个函数
setmetatable(t1, mt)
setmetatable(t2, mt)
print(t1.money)
t2.say_fun()
--- 输出结果
-- 800000
-- Tinywan say 大家好
复制代码

 

posted @   Tinywan  阅读(700)  评论(0编辑  收藏  举报
编辑推荐:
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· C# 深度学习框架 TorchSharp 原生训练模型和图像识别
阅读排行:
· 这或许是全网最全的 DeepSeek 使用指南,95% 的人都不知道的使用技巧(建议收藏)
· 拒绝繁忙!免费使用 deepseek-r1:671B 参数满血模型
· 本地搭建DeepSeek和知识库 Dify做智能体Agent(推荐)
· Sdcb Chats 重磅更新:深度集成 DeepSeek-R1,思维链让 AI 更透明!
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
点击右上角即可分享
微信分享提示