• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua极简入门指南:全局变量

Lua极简入门指南:全局变量

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了lua 全局变量,lua定义全局变量,lua 全局函数,lua 变量,lua环境变量等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

全局环境

Lua 把全局变量放在一个 table _G 中,这个 table 被叫做全局环境(global environment)。打印所有的全局变量名:

for n in pairs(_G) do print(n) end
</div>

_ENV(Lua 5.2 开始支持)

对于一个 free name(名字没有绑定任何声明)var 实际上会被转换为 _ENV.var(每个 chunk 中都会存在一个名为 _ENV 的变量):

v1 = 1
local v2 = 2
print(_ENV.v1)  --> 1
print(_ENV.v2)  --> nil
 
function f(v3)
    v4 = 4
    local v5 = 5
    print(_ENV.v3)  --> nil
    print(_ENV.v4)  --> 4
    print(_ENV.v5)  --> nil
 
    for v6 = 1, 2 do
        print(_ENV.v6)  --> nil
    end
end
 
f(3)
</div>

任何作为 _ENV 的值的 table 被叫做环境(environment)。Lua 加载一个 chunk 的时候,此 chunk 的 _ENV 默认值为全局环境。看一个简单的例子:

print(math)  --> table: 000000000078BCC0
 
local print = print
_ENV = {}
print(math)  --> nil
</div>

一个比较有趣的例子是:

a = 2
do
    local _ENV = {print = print, a = 14}
    print(a)  --> 14
end
print(a)  --> 2
</div>

正如前面说的 a 会被转换为 _ENV.a,而 do end 中定义了一个新的 _ENV,因此第一个 print(a) 输出了局部变量 _ENV 的 a 的值。由此可以看到,我们可以很容易的为一个函数创建一个私有的环境:

function factory(_ENV)
    return function()
        return a
    end
end
 
f1 = factory{a = 6}
f2 = factory{a = 7}
print(f1())  --> 6
print(f2())  --> 7
</div>

类似的,我们在不同的函数中共享一个特定的公共环境也是很容易做到的。

</div>

您可能想查找下面的文章:

  • 解析Lua中的全局环境、包、模块组织结构
  • 详解Lua中的变量相关知识点
  • Lua教程(十一):模块与包详解
  • Lua中创建全局变量的小技巧(禁止未预期的全局变量)
  • Lua极简入门指南:全局变量
  • Lua简介、编译安装教程及变量等语法介绍
  • Lua中全局变量与非全局环境介绍

相关文章

  • Lua中table库函数方法介绍
  • Lua中关于元方法的一些知识点小结
  • Lua元表与元方法实例讲解
  • Lua中遍历文件操作代码实例
  • Lua中的常用函数库汇总
  • Lua获取系统时间和时间格式化方法及格式化参数
  • Lua判断一个目录或文件是否存在的方法
  • Lua编程示例(八):生产者-消费者问题
  • lua中使用packagepath解决多个项目的路径冲突问题
  • 获取Lua表结构(table)数据实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua中强大的元方法__index详解
    • Lua中执行系统命令方法介绍
    • Lua中ipair和pair的区别
    • Lua table类型学习笔记
    • Lua中遍历数组和table的4种方法
    • Lua中获取table长度的方法
    • Lua和C++的通信流程代码实例
    • Lua判断一个目录或文件是否存在的方法
    • Lua编程示例(四):Lua标准库之表库、字符串库、系统库
    • 使用Lua编写Web端模板引擎的实例代码分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有