`

lua 环境解析

阅读更多
最近写一些lua文件 遇到的一些环境问题  跟大家分享一下
1.平时环境
平时大家如果不更改环境的话  其实都是在_G的环境写编写的 也就是说
gname = "1111111111"
print(_G.gname)

是会输出1111111111的 这里的_G 可以理解为 lua先自己写了
table  _G = {
--
}
然后大家定义的全局变量都在这个table之中
2.自己更改环境
-- 将当前全局环境重新设置为新的table
setfenv(1, {});
gname = "1111111111"
print(gname)

此时当前的环境就会报错  不认识这个print 因为当前的环境已经变成了另外一个table

3.更改的环境引用其他的函数
gName = "1111111111";
	-- 将当前全局环境重新设置为新的table
setfenv(1, {g = _G}); 
g.print(gName);
-- 再次定义一个全局变量
gName = "2222222222";
-- 再次输出值
g.print(gName);
-- 输出原来的值
g.print(g.gName);

此时的输出结果是:
nil
2222222222
1111111111
如何理解?
我们转换一下
table   _G = {
   gName = "1111111111"
   function print()   --  具体内容不写
   end
}
以上就相当于setfenv(1, {g = _G});这个语句之前的环境
g = G
table 当前 = {
   g.print(gName)
   gName = "2222222222"
   g.print(gName)
   g.print(g.gName)
}
以上就相当于setfenv(1, {g = _G})这个语句之后的环境
所以g.print 调用的是table_G中的print
而第一个输出的就是没有值的  为nil  因为这个语句之前根本就没有定义过gName
而第二个输出的是222222222222  这个是本环境下的全局变量
而第三个输出的是1111111111  因为它引用的是_G环境下的变量
分享到:
评论

相关推荐

    LUA语言解析器

    LUA语言解析器是用于处理和执行LUA编程语言源代码的核心组件。LUA是一种轻量级、可扩展的脚本语言,广泛应用于游戏开发、嵌入式系统、配置管理等多个领域。其简洁的语法和高效性能使得它成为许多开发者的选择。 在...

    lua-pb解析

    5. **性能**: 使用lua-pb的一个好处是,它在纯Lua环境中运行,无需依赖其他运行时环境,这有利于减少资源消耗,特别是在嵌入式系统或轻量级环境中。 关于标签,"lua"和"protobuf",我们可以进一步了解它们的关联: ...

    lua proto 解决int64 解析

    在Unity3D开发中,Lua和protobuf(Protocol Buffers)经常被用来进行数据序列化和反序列化,...通过选择合适的库、自定义编码解码、分拆处理或改用其他数据类型,我们可以成功地在Lua环境中处理protobuf的int64数据。

    lua51-lua环境

    2. **开发脚本**:利用Lua的灵活性,编写各种脚本来自动化任务,例如系统维护、文件处理或数据解析。 3. **游戏开发**:许多游戏引擎支持Lua作为脚本语言,你可以用`lua.exe`和`luac.exe`来开发和测试游戏逻辑。 4. ...

    wireshark lua 插件 解析提取网络报文传输内容(文本,多媒体,等信息)

    1. windows 下 安装 wiresshark (2.2.6测试没有问题)版本最好是最新的版本 老版本好像会报一个tshark错误 ...{liunx 下也可以 不过要加上一个环境变量。否则会报找不到文件。具体的太久了忘记了!!}

    使用 xls_to_lua.lua 把 xls 解析成 lua table

    解析文件使用 lua 编写,把 *.xls 解析成 lua table,双击 run.bat 文件值行解析,支持多子表解析,键值对 k/v 解析。 ... 支持解析的数据类型: ...zip 包里有例子,有 lua 环境安装包,例子.png图片

    一个用 Lua 实现的图片超解析库(图片超解析:努力无损放大图片).zip

    1. 安装 Lua 和 Torch:首先确保你有 Lua 和 Torch 的运行环境,这是运行 waifu2x 代码的基础。 2. 获取项目源码:从提供的压缩包中解压 waifu2x-master 文件夹,里面包含了所有必要的源代码和资源。 3. 预处理数据...

    lua-amf 解析库

    此外,任何需要在Lua环境中处理AMF3数据的项目,如Web服务接口、数据存储和检索等,都可以受益于lua-amf库。 7. **集成与扩展**:lua-amf库可以与其他Lua模块无缝集成,例如与网络通信库结合,实现完整的AMF3数据...

    lua5.3.2编译器&解析器

    这个压缩包包含了 Lua 的编译器和解析器,两个核心组件分别是 Lua.exe 和 Luac.exe。 Lua.exe 是 Lua 解释器,它是执行 Lua 代码的引擎。当你运行 Lua.exe 并传递一个包含 Lua 代码的脚本文件时,解释器会逐行读取...

    lua库和解析器

    1. lua51.dll:这是一个动态链接库(Dynamic Link Library),在Windows操作系统中,它是Lua运行时环境的一部分。lua51.dll包含了Lua引擎的函数实现,当你在程序中调用Lua代码时,这个库会提供必要的运行支持。它...

    wireshark GPON OMCI报文解析lua

    Wireshark的Lua解析功能对于理解GPON OMCI报文至关重要,尤其在复杂网络环境中,能帮助技术人员深入理解网络行为,快速定位问题,提升网络维护的效率和准确性。通过使用"omci插件",可以简化这个过程,使GPON网络的...

    LuaProject lua源码编译出来的解析器

    这暗示我们这个项目是关于构建和使用自定义的Lua解析器,可能是为了特定的环境或需求,或者是教学目的,或者是对Lua解释器本身的深入研究。 【标签】:“Lua Project” “Lua”标签明确了项目的编程语言基础,即...

    Lua在window下开发环境

    "解压安装"意味着用户只需要将压缩文件解压缩并执行安装程序,即可完成Lua环境的部署,体现了Lua环境设置的简洁性。 **知识点详解** 1. **Lua语言基础**: Lua是一种解释型的、动态类型的、弱类型的语言,语法简洁...

    luaQrcode lua语言生成二维码

    相比于一维条形码,二维码具有更高的信息密度和错误纠正能力,能够在各种环境下准确读取。 **3. libqrencode库** libqrencode是QRCode生成的一个C库,它提供了一套API供开发者调用,生成不同级别的二维码。...

    lua protobuf in c++

    通过使用`protoc-gen-lua`生成的Lua绑定,开发者可以在Lua环境中方便地序列化和反序列化protobuf消息,这对于多语言环境下的数据通信和存储是非常有价值的。在实际应用中,这样的集成可以提升代码的可维护性和性能,...

    Lua脚本语言WIN环境

    luac52.exe是这个工具的64位版本,用于将Lua脚本编译成可执行的字节码文件,这些文件通常以`.lua`扩展名保存,可以在不解析源码的情况下运行。 4. **wlua52.exe**: wlua是Windows下的Lua命令行界面,它提供了一个...

    linux环境中c++调用lua动态链接库以及编译方法

    在Linux环境中,C++与Lua交互是常见的技术实践,特别是在游戏开发、脚本扩展和自动化任务中。本文将深入探讨如何在C++程序中调用Lua动态链接库,并讲解其编译过程和环境配置。 首先,我们需要理解Lua的动态链接库...

    Lua For Windows 开发环境

    3. **扩展库支持**:LuaForWindows包含了一系列常用的扩展库,如socket、json、 Corona 模块等,这些库可以帮助开发者实现更复杂的功能,如网络通信、数据解析等。 4. **调试器支持**:通过集成lua_dbg,开发者可以...

    protobuf-lua

    总结来说,protobuf-lua是Lua开发者处理结构化数据的强大工具,通过提供编译器、编码解码接口以及高效轻量级的实现,使得在Lua环境中实现protobuf成为可能,极大地提升了数据交换的效率和便捷性。

    lua 操作excel 表格

    2. **luaxlsx**: 相比之下,`luaxlsx`库更便于直接在Lua环境中使用,它不需要额外的编译步骤。你只需将其源代码引入项目,即可通过Lua代码直接读写.xlsx文件。其基本用法包括打开工作簿、选择工作表、读取/写入...

Global site tag (gtag.js) - Google Analytics