Lua面线对象学习

--[[

]]

local userdata = {}
local Register = {}

function Register:del(key)
    userdata[self.namespace][key] = nil
end

function Register:get(key)
    if userdata[self.namespace][key] ~= nil then
        return userdata[self.namespace][key]
    else
        return false
    end
end

function Register:set(key, value)
    userdata[self.namespace][key] = value
    return true
end

function Register:new()
    if namespace == nil then
        namespace = ‘default‘
    end
    if userdata[namespace] == nil then
        userdata[namespace] = {}
    end
    local instance = {
        namespace = namespace,
        del = self.del,
        get = self.get,
        set = self.set
    }
    setmetatable(instance, Register)
    return instance
end

function Register:__newindex(key, value)
    if key ~= nil and value ~= nil then
        userdata[self.namespace][key] = value
    end
end

function Register:__index(index)
    local out = rawget(userdata[self.namespace], index)
    if out then
        return out
    else
        return false
    end
end

return Register
时间: 2024-12-18 12:46:01

Lua面线对象学习的相关文章

LuaJava学习笔记[2]使用Lua控制Java对象

LuaJava学习笔记 使用Lua控制Java对象 [资源准备] 本次依然使用LuaJava1.1作为工具,你可以到这里进行下载:http://luaforge.net/projects/luajava/.不要忘记将本地库放到项目目录中去.我的工作目录是这样的: 为了方便,我使用Maven进行的项目依赖关联,你也可以将luajava的jar包导入项目中,这两者都是等效的.如果使用的linux进行开发,你的本地库名称应该是一个so文件,这些库文件在链接页面中都可以找到. [源文件] TestObj

微信小程序学习Course 4-2 JS数组对象学习

微信小程序学习Course 3-2 JS数组对象学习 本节主要介绍JS中的数组. 3-2.1 数组的声明 数组声明的方式多种,如下例.一般我们可以先创建一个空数组,然后再填充. var names = [];//创建一个空数组 var names = ["sadad","asdsad"];//创建一个包含两个字符串的数组 var names = new Array(3);//创建一个包含三个元素的数组 3-2.2 数组的增添 数组有多种增添方式,一种是栈方式,另一种

lua绑定C++对象系列一——基础知识

本文主要介绍lua绑定C++对象的原理和方法,并能在C/C++定义类和方法,在lua中创建C++类的句柄实例,像面向对象一样去使用C++类实例.为了便于大家理解,系列文章会从基础知识讲解,并通过多个版本的进化,一步步完成从基础到多版本实践的完美结合和深入,彻底理解lua绑定C++对象的原理方法.在阅读本系列文章前,需要具备一定的lua开发经验以及lua与C/C++相互调用操作的知识. 1.基础C/C++和Lua的相互引用调用 我们知道C和lua相互调用,是通过虚拟栈进行数据传递通信的,基础介绍介

09-js的window对象学习.html

<html> <head> <title>window对象学习</title> <meta charset="UTF-8"/> <!-- BOM浏览器对象模型:是规范浏览器对js语言的支持(js调用浏览器本身的功能). BOM的具体实现是window对象 window对象使用学习: 1.window对象不用new,直接进行使用即可,类似Math的使用方式,window关键字可以省略不写. 2.框体方法 alert:警告框

12-js校验form表单和event对象学习

js校验form表单: <html> <head> <title><html> <head> <title>js校验form表单</title> <meta charset="UTF-8"/> <!--声明css代码域--> <style type="text/css"> /*设置背景图片*/ body{ background-image: url

lua OOP实现对象的链式调用

数学中的链式法则 http://sx.zxxk.com/ArticleInfo.aspx?InfoID=164649 链式微分法则:实数运算的链式法则:对数运算的链式法则:平行公理的链式法则:向量运算的链式法则: JS对象链式调用方法 http://stackoverflow.com/questions/15029309/how-to-write-jquery-chainable-functions-for-local-usinghttp://stackoverflow.com/question

类与对象学习总结

对象:是具体的事物 xiaoming  xiaohong, Object, instance(实例).以后我们说某个类的对象,某个类的实例.是一样的意思. 类:class.是对对象的抽象(抽象à抽出象的部分)Person 先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象. 生活案例 –  类是一个图纸  对象是根据该图纸制造多个实物 –  类是一个模具   对象是使用模具制造的多个铸件(月饼模子 ) –  类是上海大众汽车,对象就是大家购买的一辆辆具体上海大众汽车 对象

Lua和C++交互 学习记录之六:全局函数交互

主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1.C++调用Lua中函数 ①Lua中的函数 1 function add(x,y) 2 return x + y 3 end ②C++调用函数 1 //lua->stack,全局函数位置-1 2 lua_getglobal(L, "add"); 3 4 //c->stack,传

Lua和C++交互 学习记录之四:全局表交互

主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1.C++读取Lua中的表 ①在hello.lua中设置一个全局表: global_c_read_table = {integer_val = 1,double_val = 2.34,string_val = "test_string"} ②在C++中读取 1 //lua->stack