• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

完整代码

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 大家好

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于luatable表发布时间:2022-07-22
下一篇:
使用Nginx+Lua(openresty)实现自定义WAF发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap