3.多脚本执行
Require和Package.loaded[]、_G
- 默认一个脚本只能执行一次
- 如需多次执行需要将
package.loaded["TestRequire"] = nil ,之后再次执行 - _G表存储所有的全局变量(包含外部脚本的全局变量)
- 使用
local声明局部变量 - 外部脚本可以将局部变量返回,调用者接收即可
print("**********多脚本执行************")
print("**********全局变量和本地变量************")
--全局变量
a = 1
b = "123"
for i = 1,2 do
c = "Cold"
end
print(c)
--本地(局部)变量的关键字 local
for i = 1,2 do
local d = "Cold"
print("循环中的d"..d)
end
print(d)
fun = function()
local tt = "123123123"
end
fun()
print(tt)
local tt2 = "555"
print(tt2)
print("**********多脚本执行************")
--关键字 require("脚本名") require('脚本名')
require('TestRequire')
print(testA)
print(testLocalA)
print("**********脚本卸载************")
--如果是require加载执行的脚本 加载一次过后不会再被执行
require("TestRequire")
--package.loaded["脚本名"]
--返回值是boolean 意思是 该脚本是否被执行
print(package.loaded["TestRequire"])
--卸载已经执行过的脚本
package.loaded["TestRequire"] = nil
print(package.loaded["TestRequire"])
--require 执行一个脚本时 可以再脚本最后返回一个外部希望获取的内容
local testLA = require("TestRequire")
print(testLA)
print("**********大G表************")
--_G表是一个总表(table) 他将我们申明的所有全局的变量都存储在其中
for k,v in pairs(_G) do
print(k,v)
end
--本地变量 加了local的变量时不会存到大_G表中TestRequire.lua
print("Test测试")
testA = "123"
local testLocalA = "456"
print(testLocalA)
return testLocalA输出:
**********多脚本执行************
**********全局变量和本地变量************
Cold
循环中的dCold
循环中的dCold
nil
nil
555
**********多脚本执行************
Test测试
456
123
nil
**********脚本卸载************
456
nil
Test测试
456
456
**********大G表************
a 1
string table: 00C6A5D8
xpcall function: 00C67FA8
b 123
package table: 00C62668
tostring function: 00C68188
print function: 00C68448
os table: 00C6A5B0
unpack function: 00C68088
require function: 00C68E00
getfenv function: 00C68508
setmetatable function: 00C68128
next function: 00C68548
assert function: 00C61C98
tonumber function: 00C67FE8
io table: 00C6A588
rawequal function: 00C68468
testA 123
collectgarbage function: 00C68388
arg table: 00C6A470
getmetatable function: 00C683A8
module function: 00C68F40
fun function: 00C6CEA0
rawset function: 00C68648
c Cold
math table: 00C6A1C8
debug table: 00C6A240
pcall function: 00C684A8
table table: 00C62690
newproxy function: 00C60550
type function: 00C68028
coroutine table: 00C62618
_G table: 00C64F70
select function: 00C68368
gcinfo function: 00C68408
pairs function: 00C60520
rawget function: 00C685C8
loadstring function: 00C68488
ipairs function: 00C64F98
_VERSION Lua 5.1
dofile function: 00C684C8
setfenv function: 00C68348
load function: 00C683C8
error function: 00C685E8
loadfile function: 00C68568
Lua多脚本执行与变量作用域摘要:
- 脚本默认只执行一次,需手动卸载(package.loaded["脚本名"]=nil)才能重新执行
- _G表存储所有全局变量(包括外部脚本的),但local局部变量不存入_G表
- 外部脚本可通过return返回局部变量供调用者使用
- 全局变量在整个环境中可见,而local变量只在定义的作用域内有效
- require加载脚本时会执行并缓存,通过package.loaded可查询/控制脚本状态
