这篇文章主要是介绍lua的全局变量和局部变量的定义和使用情况,以及在require模块时的调用,编辑器为IDEA。
oneLua脚本:
a = 5 --全局变量
local b= 5 --局部变量
function method()
c = 5 --全局变量
local d = 6 --局部变量
end
method() --执行method方法
print(c,d) --输出结果:5 nil(这个d是全局变量,但是并没有赋值,method方法中的d只是局部变量)
do
local a = 6 --局部变量a
b = 6 --对局部变量重新赋值
print(a,b) --输出结果:6 6
end
print(a,b) -- 输出结果:5 6
--lua中的变量都是全局变量,就算是在语句块和函数中也一样,除非使用local显示地声明为局部变量
--局部变量的作用域为从声明位置开始到所在语句块结束
--变量的默认值都是nil
twoLua脚本:
a,b,c = 1,2,3 --lua可以对多个变量同时赋值,变量列表和值列表各个元素用逗号隔开
print(a,b,c) --输出1 2 3
--当变量个数和值个数不一致时
--变量个数> 值个数 那么补足nil
a1,b1,c1 = 0
print(a1,b1,c1) --输出0 nil nil
--变量个数< 值个数 那么多余的值被忽略
d1,f1=3,4,5
print(d1,f1) --输出3 4
然后在一个lua文件中去调用另一个lua中的方法或者字段。这里遇到了一个坑,require"模块"的模块文件不是放在哪个文件目录都行,函数 require 有它自己的文件路径加载策略,它会尝试从 Lua 文件或 C 程序库中加载模块。
配置lua解析器路径和lua文件路径如图:
在fourLua.lua中去调用threeLua.lua的方法或者字段。
threeLua脚本:
threeLua={}
function testMethod() --testMethod 全局方法
print("我是全局方法")
end
A1=12 --全局字段
local A2 = 13 --局部字段
function threeLua.testMethod3()
print(A2)
end
function threeLua:testMethod2() --testMethod2本身并不是全局方法,属于全局table的一个元素
print("我是table中的方法")
end
local function testMethod4()
print("我是局部方法")
end
function threeLua:testMethod5()
testMethod4()
end
--lua的模块路径存在于一个全局table--package的path字段和cpath字段里
--当require时lua解释器会按照path和cpath里的路径替换"?"查询是否存在该文件,有就加载,没有报错
--print(package.path) --输出 F:\luaProject\project001\lua\?.lua
--print(package.cpath) --输出 F:\luaProject\project001\?.dll
fourLua脚本如下:
--定义一个模块
fourLua={}
fourLua.a9=8
require("threeLua")
testMethod() --输出 我是全局方法
print(A1) --输出12
print(A2) --这里的A2是全局变量了,并不是threeLua中的局部变量A2 输出nil
threeLua.testMethod3() --如果想输出threeLua中的A2,那么在threeLua中搞一个testMethod()方法即可
threeLua.testMethod5() --输出 我是局部方法
threeLua.testMethod2() --输出 我是table中的方法
--return fourLua
--print(package.path)
|
请发表评论