Lua学习笔记(二)

Lua变量

--[[
Lua变量三种类型:全局变量(储存在名称为_G的table中)、局部变量、table中的域
Lua中的变量全都是全局变量,即使在语句块或函数里,除非用local显式声明为局部变量
局部变量作用域与C/C++概念相同
变量默认值为nil
]]
-- test.lua文件脚本
a=1			-- 全局变量
local b=2	-- 文件内局部变量
 
function rua()
    c=5			-- 全局变量
    local d=6	-- 局部变量
end

rua()
print(c,d)		--输出:5 nil

do
    local a=6	-- 局部变量,这里局部变量覆盖了全局变量,引用外部全局变量时可以用_G.a来引用,类似于C/C++的::a
    b=6			-- 对局部变量重新赋值
    print(a,b)	-- 输出:6 6
end

print(a,b)		-- 输出:5 6

赋值语句

-- 赋值可以改变一个变量的值和表域
a="hello" .. "world"
t.n=t.n+1
-- 可以对多个变量同时赋值
a,b=10,2*x		-- a=10,b=2*x
-- 赋值语句会先计算右边所有的值,然后再执行赋值操作
-- 交换变量写法
x,y=y,x
--[[
变量和值个数不一致:
变量个数>值的个数		按变量个数补足nil
变量个数<值的个数		多余的值被忽略
]] 
a,b,c=0
print(a,b,c)	-- 输出:0 nil nil

索引

-- table的索引使用方括号[]和点.的操作
t[i]
t.i					-- 当索引为字符串类型时的一种简化写法
gettable_event(t,i)	-- 采用索引访问本质上是一个类似这样的函数调用

Lua循环

while循环

while(condition) do
    -- do something
end

数值for循环

-- var从exp1变化到exp2,每次变化以exp3为步长,可选,不指定默认为1
for var=exp1,exp2,[exp3] do
    -- do something
end

泛型for循环

-- 相当于foreach
a={"a","b","c"}
for i,v in ipairs(a) do
    print(i,v)
end

repeat...until循环

-- 相当于C/C++的do...while
repeat
    -- do something
until(condition)

break语句

-- Lua仅支持break,不支持continue,同其他语言
while(condition) do
    break
end

Lua流程控制

if语句

if(condition) then
    -- do something
end

if...else语句

-- 两条分支
if(condition) then
    -- do something
else
    -- do something
end

-- 多条分支
if(condition1) then
    -- do something
elseif(condition2) then
    -- do something
else
    -- do something
end
posted @ 2019-07-20 10:57  Jaxes  阅读(289)  评论(0编辑  收藏  举报