zoukankan      html  css  js  c++  java
  • 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 大家好

  • 相关阅读:
    Appium脚本(2):元素检测
    查看appPackage和appActivity的多种方法
    让织梦内容页arclist标签的当前文章标题加亮显示
    dedecms wap 上一篇 下一篇 链接出错
    织梦开启二级域名(多站点)内容页图片无法显示的解决方法
    多级分类标签{dede:channelartlist}实现当前栏目颜色高亮显示
    织梦channelartlist标签当前栏目高亮
    dedecms模板中 if else怎么写
    dedecms调用子栏目及文章列表
    Dedecms判断当前栏目下是否有子栏目
  • 原文地址:https://www.cnblogs.com/tinywan/p/6940784.html
Copyright © 2011-2022 走看看