Lua 环境

3人阅读 评论(0) 收藏 举报
分类:

查看_G表中内容

for k, v in pairs(_G) do
	print(k, v)
end

运行结果 
string table: 0042DFA8
xpcall function: 0042E7C0
package table: 0042DC60
tostring function: 0042E720
print function: 00247660
os table: 0042DF30
unpack function: 0042E780
require function: 0042ECA0
getfenv function: 00247500
setmetatable function: 0042E6E0
next function: 002475E0
assert function: 002473E0
tonumber function: 0042E700
io table: 0042DDF0
rawequal function: 002476A0
collectgarbage function: 00247420
arg table: 0042E1B0
getmetatable function: 00247540
module function: 0042EC60
rawset function: 00247700
math table: 0042E020
debug table: 0042E070
pcall function: 00247620
table table: 0042DD00
newproxy function: 00247BF8
type function: 0042E740
coroutine table: 0042DBC0
_G table: 00241AD8
select function: 0042E660
gcinfo function: 002474C0
pairs function: 00247BC8
rawget function: 002476C0
loadstring function: 002475C0
ipairs function: 00247B98
_VERSION Lua 5.1
dofile function: 00247440
setfenv function: 0042E6A0
load function: 00247580
error function: 00247480

loadfile function: 00247560

全局变量会被添加到  _G表中

区分全局变量和局部变量

a = 500
print(a)
local a = 300
print(a)
print("-----------------------")
for k, v in pairs(_G) do
    print(k, v)
end

运行结果
500
300
-----------------------
a 500
......

环境路径

for k, v in pairs(package.loaded) do
	print(k, v)
end
print("-----------------------------")
for k, v in pairs(package.preload) do
	print(k, v)
end
print("-----------------------------")
print(package.path)
print("-----------------------------")
print(package.cpath)
运行结果
string table: 0025DFA8
debug table: 0025E070
package table: 0025DC60
_G table: 00341AD8
io table: 0025DDF0
os table: 0025DF30
table table: 0025DD00
math table: 0025E020
coroutine table: 0025DBC0
-----------------------------
-----------------------------
;.\?.lua;d:\Program Files (x86)\Lua\5.1\lua\?.lua;d:\Program Files (x86)\Lua\5.1\lua\?\init.lua;d:\Program Files (x86)\Lua\5.1\?.lua;d:\Program Files (x86)\Lua\5.1\?\init.lua;d:\Program Files (x86)\Lua\5.1\lua\?.luac
-----------------------------
.\?.dll;.\?51.dll;d:\Program Files (x86)\Lua\5.1\?.dll;d:\Program Files (x86)\Lua\5.1\?51.dll;d:\Program Files (x86)\Lua\5.1\clibs\?.dll;d:\Program Files (x86)\Lua\5.1\clibs\?51.dll;d:\Program Files (x86)\Lua\5.1\loadall.dll;d:\Program Files (x86)\Lua\5.1\clibs\loadall.dll

require 加载模块后会存入  package.loaded 中

require查找模块是否存在的顺序   package.loaded   package.preload  package.path  package.cpath , 如果不在  package.loaded 中,而在其他路径下,则require后会加入  package.loaded 中。

环境变量在函数中设置,方式1
-- test_1.lua
local a = {}
b = a

setmetatable(a, {__index = _G})
setfenv(1, a)	-- 设置当前环境为a

function add(x, y)
	return x + y
end

return a
-- test_2.lua
c = require "test_1"
print(c.add(1,2))
print(b.add(1,2))
print(test_1.add(1,2))
运行结果
3

3
3

环境变量在函数中设置,方式2

-- test_1.lua
module(...)
function add(x, y)
    return x + y
end
-- test_2.lua
c = require "test_1"
print(c.add(1,2))
print(test_1.add(1,2))
运行结果

3
3

环境变量 setfenv 的用法

function func()
	setfenv(1, {})	-- 设置当前函数的环境变量为空
	print("hello")	-- print 报错,当前环境没有print
end

print("world")
func()

运行结果

world
lua: test.lua:3: attempt to call global 'print' (a nil value)
stack traceback:
test.lua:3: in function 'func'
test.lua:7: in main chunk

[C]: ?

function func()
	local a = {}
	setmetatable(a, {__index = _G})    -- 设置元表
	setfenv(1, a)	
	print("hello")	-- print 就可以访问了
end

print("world")
func()
运行结果
world
hello
查看评论

Lua中的环境概念

Lua中的环境概念 2014-07-29 分类:Lua 阅读(1834) 评论(12)  前言 Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”。这种组织结...
  • linuxheik
  • linuxheik
  • 2016-11-17 13:04:53
  • 580

lua学习之环境配置

lua环境配置 sublime的相关操作
  • ccy0815ccy
  • ccy0815ccy
  • 2015-04-18 21:02:37
  • 1378

lua(1)-环境配置

说到游戏开发,就不得不提到lua,lua作为一种简单、可扩展、可移植及高效的脚本语言,广泛地被用于网络游戏以及手机游戏中。写游戏常常需要跟lua打交道,还是做些笔记记下来吧,以后想看方便找= =。 ...
  • Yueya_Shanhua
  • Yueya_Shanhua
  • 2016-08-04 11:32:57
  • 743

快速掌握Lua 5.3 —— 环境

Q:_G? A:_G是一个普通的”table”,它其中存储了当前运行环境中所有的全局变量。 type(_G) --> table for n in pairs(_G) do print(n)...
  • VermillionTear
  • VermillionTear
  • 2016-02-05 17:12:23
  • 1698

Lua-1:Sublime Text3配置Lua环境

Sublime Text3配置Lua环境Lua是啥玩意儿大家自行百度就好~ 其实运行Lua脚本的编译器非常多,个人比较喜欢Sublime。下载Sublime Text3官网下载地址:http://w...
  • qq_25301883
  • qq_25301883
  • 2017-09-20 10:22:31
  • 295

在Mac上面配置lua环境

一.下载和安装 lua 的资源包 1. 下载最新版的lua资源包lua 资源下载,然后解压  2. 运行“终端”进入到该文件夹下,主要是 cd 文件夹名 3.然后在终端输入“sudo mak...
  • victor_barnett
  • victor_barnett
  • 2017-02-03 10:03:44
  • 1111

为lua构建沙盒环境

我们有时需要限制lua代码的运行环境,或者是让使用者不能访问到lua的一些全局函数.lua语言本身没有类似于C++, C#, Java那样的成员访问控制. 但lua提供了setfenv函数可以很灵活的...
  • xiaodaidabin
  • xiaodaidabin
  • 2012-09-10 15:31:57
  • 2053

lua (vc环境)学习笔记(学习代码)

  • 2011年07月25日 10:09
  • 35KB
  • 下载

初识Lua,搭建环境和第一个程序

首先这是一台完全没有LUA环境的机子,当然你也可以以前做过,但是现在不知道怎么弄的给不能用了的机子。然后你得打开下面的一个网址下载东西...
  • kingsollyu
  • kingsollyu
  • 2011-07-18 11:13:16
  • 19737

vs2012搭建lua+c++环境

工具: vs2012 lua5.1 配置: 1 、启动VS2012,选择C++下的"win32"项目类型中的"Win2控制台应用程序" 2、项目——Property--Confi...
  • csdehaolin
  • csdehaolin
  • 2015-01-10 11:25:39
  • 319
    个人资料
    持之以恒
    等级:
    访问量: 668
    积分: 506
    排名: 10万+
    文章存档
    最新评论