Lua变量
- 变量在使用前,必须在代码中进行声明,即创建该变量(编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值)
- Lua 变量有三种类型:全局变量、局部变量、表中的域
- 函数外部的变量默认为全局变量,除非用local声明为局部变量
- 函数内的变量与函数的参数默认为局部变量
- 局部变量的作用域为从声明位置开始到所在语句块结束(或直到下一个同名局部变量的声明)
- 变量的默认值均为 nil
bb1 = 10 -- 全局变量
local bb2 = 1 -- 局部变量
function j()
cc = 1 -- 全局变量
local dd = 2 -- 局部变量
end
print(bb1) -- 10
print(bb2) -- 1
j()
print(cc) -- 1
print(dd) -- nil
-- 代码块
do
local aa1a = 4 -- 局部变量
cds = 2 -- 全局变量
print(aa1a, cds) -- 4 2
end
print(aa1a, cds) -- nil 2
赋值语句
-- 赋值语句
axa = "hello" .. "world!"
t = {n = 1}
t.n = t.n + 1
print(axa) -- helloworld!
print(t.n) -- 2
- Lua可以对多个变量同时赋值
- 变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量
t1, t2 = 1, 11
print(t1, t2) -- 1 11
- 遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值
t1, t2 = 1, 11
print(t1, t2) -- 1 11
-- 变量值交换 swap
t1, t2 = t2, t1
print(t1, t2) -- 11 1
ss = {2, 4}
-- swap lua的键从1开始
ss[1], ss[2] = ss[2], ss[1]
print(ss[1], ss[2]) -- 4 2
- 当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
axaa, axbb, axcc = 1,2
print(axaa, axbb, axcc) -- 1 2 nil
ada, adq = 5, 6, 9
print(ada, adq) -- 5 6
-- 注意这种赋值情况
csf, wdf, edda = 2
print(csf, wdf, edda) -- 2 nil nil
fgr, dkd, ofr = 2, 2, 2
print(fgr, dkd, ofr) -- 2, 2, 2
function t()
return 111, 200
end
-- t()返回两个值,第一个赋值给gg1,第二个值返回给gg2
gg1, gg2 = t()
print(gg1, gg2) -- 111 200
索引
- 对 table 的索引使用方括号 []
- Lua 也提供了 . 操作
site = {}
site["key"] = "csd sss"
print(site["key"]) -- csd sss
print(site.key) -- csd sss
网友评论