`
chenpeilei2003
  • 浏览: 191911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lua里模拟typeof()获取对象类型

Lua 
阅读更多
自定义typeof()函数,获取"对象"类型

function typeof(var)
    local _type = type(var);
    if(_type ~= "table" and _type ~= "userdata") then
        print('---1')
	return _type;
    end
    local _meta = getmetatable(var);
    if(_meta ~= nil and _meta._NAME ~= nil) then
	 print('---2')
        return _meta._NAME;
    else
	 print('---3')
        return _type;
    end
end


XC={}--基类
function XC:new(o)
	o = o or {}
	setmetatable(o, self)
	self.__index = self
	return o
end
function XC:extend()
    o = {}
    setmetatable(o, self)
    self.__index = self
    return o
end


XBG = XC:extend() --派生类
XBG._NAME='XBG'


b1=XBG:new()      --创建对象
print(typeof(b1))

输出:XBG

分享到:
评论

相关推荐

    Lua面向对象封装

    与Java或C++等语言不同,Lua并不直接支持类和对象的概念,而是通过表(table)和元表(metatable)来模拟面向对象特性。表在Lua中是一种通用的数据结构,可以作为类的定义,而元表则用于定义类的行为,特别是继承和...

    Nginx服务器中使用lua获取get或post参数.docx

    Nginx服务器中使用lua获取get或post参数 在Nginx服务器中,使用lua获取get或post参数是通过ngx_lua模块来实现的。ngx_lua模块是Nginx的一个第三方模块,提供了在Nginx中使用Lua语言的能力。 首先,我们可以使用ngx...

    Lua面向对象封装 链接库

    Lua的面向对象封装 LuaOO是Lua C API使用C++语言的面向对象封装。LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时...

    lua与Android交互,基本实现

    在Java中,Lua值可以通过LuaState的API转换为Java对象,反之亦然。例如,从Lua传递一个表到Java: ```lua local table = {key1="value1", key2="value2"} android.someMethod(table) ``` 在Java端接收: ```java ...

    lua面向对象实现

    在Lua中实现面向对象编程(OOP)虽然不像其他静态类型语言那样直接,但通过元表和元方法的概念,同样可以构建出具有类和对象的结构。 面向对象编程的基本概念包括类、对象、继承、封装和多态。在Lua中,这些概念的...

    strokeit获取信息.lua

    strokeit获取信息.lua,strokeit获取信息.lua,strokeit获取信息.lua,strokeit获取信息.lua,

    Lua面向对象封装好的基类Class

    在Lua中,面向对象编程并不是内置的特性,但可以通过模拟实现。这里我们关注的是一个已经封装好的面向对象基类"Class",它提供了一种在Lua中进行面向对象编程的方式。 在Lua中,一切都是表(table),对象也不例外...

    OC与Lua交互调用(不使用第三方库)Demo

    同时,由于Objective-C是强类型的,而Lua是动态类型的,所以在处理数据类型时需要特别注意,确保正确地进行类型检查和转换。 总的来说,这个"OC与Lua交互调用(不使用第三方库)Demo"提供了一个基础框架,演示了...

    Lua的最基本使用 C++与lua的互相调用

    3. 生命周期管理:确保在C++中管理好Lua对象的生命周期,避免资源泄露。 通过以上方法,你可以有效地在C++项目中集成Lua,利用Lua的灵活性编写可扩展的脚本,同时也能通过C++调用已有的功能,实现两者的无缝结合。...

    8-lua基础篇-面向对象编程

    然而,Lua 强大的表(table)数据结构可以用来模拟面向对象编程。在 Lua 中,表可以作为类的替代品,其中字段可以存储对象的状态,而方法则表示对象的行为。 定义表的“字段”与“方法”: 在 Lua 中,可以使用...

    LUAC脚本解密_luac解密在线_luac4加密_luac反编译_luac4解密工具_luac解密工具

    LUAC脚本是一种基于Lua语言的编译格式,它将Lua源代码编译成字节码,以便在 Lua 解释器上高效运行。LUAC(Lua Compiler)是Lua官方提供的编译器,它将源代码转换为这种优化的字节码,以提高执行速度。在游戏开发、...

    用lua4.0模仿c++的指针和类的脚本以及lua4.0编译器

    表在Lua中相当于结构体或对象,可以存储各种类型的数据,包括其他表。要模仿C++的指针,我们可以创建一个表来表示对象,并使用元表(metatable)来模拟指针的行为。例如,我们可以设置元表的一个键为`__index`,使其...

    delphi7与lua相互调用的例子

    例如,可以导入`lua_pcall`来执行Lua脚本,`lua_gettop`获取 Lua 栈顶的元素数量,以及`lua_pushstring`和`lua_tostring`来传递和转换字符串等数据类型。这些函数的使用方式与C语言中的API保持一致。 在Delphi项目...

    json4lua, JSON ( Javascript对象表示法 http.zip

    json4lua, JSON ( Javascript对象表示法 http json4lua用于Lua的JSON和 JSONRPC安装luarocks install --server=http://rocks.moonscript.org/manifests/amrhassan --local js

    Lua面向对象.zip

    5. **模拟类和对象** 在Lua中,类可以是一个包含构造函数和其他方法的表。对象是构造函数调用的结果,它们通常有一个指向类元表的元表,以便调用类方法。 6. **消息传递** Lua的面向对象设计鼓励使用消息传递,即...

    lua面向对象编程类库笔记

    在Lua中实现面向对象编程(OOP)不是原生支持的特性,但可以通过库来实现。在这个主题中,我们将关注两个重要的类库:middleclass和stateful。 首先,我们来看`middleclass`库,它是Lua中最常用的一个面向对象实现...

    Lua 5.2 Reference Manual(Lua 5.2引用指南)

    此外,Lua 还提供了面向对象编程、函数式编程以及数据驱动编程的良好支持。Lua 的设计初衷是作为一种强大、轻量级且可嵌入的脚本语言,适用于任何需要脚本语言的程序。Lua 实现为一个库,用干净的 C 语言编写(即...

    如何把C++对象绑定到Lua轻量级

    一些开发者可能只是把C/C++对象映射成简单的数值,但是其他人可能需要实现运行期类型检查机制,甚至是在Lua中扩展宿主的应用。另外一个需要处理的重要问题是,是否允许Lua来控制宿主对象的生命周期。在这篇文章中,...

    LUA 面向对象设计

    ### LUA面向对象设计详解 #### 一、LUA面向对象基础 在LUA语言中,面向对象编程(Object-Oriented Programming, OOP)是一种重要的编程范式,它允许开发者组织代码并创建可复用的代码结构。与传统的面向过程编程...

    LUAC反编译_LUC_lua反编译工具_luac_luac解密工具_Lua解密_

    游戏公司可能使用自定义的加密方法来保护其lua脚本,防止被玩家篡改或获取敏感信息。而lua反编译工具则为逆向工程师提供了手段,让他们能探索游戏的内部逻辑,这对于mod制作、漏洞挖掘和游戏研究都有所帮助。 总之...

Global site tag (gtag.js) - Google Analytics