x,y = y,x --变量交换
a[i], a[j] = a[j], a[i]
-- 值的个数小于变量的个数
x, y, z = 1, 5 -- z = nil
x, y = 1, 5, 8 -- x = 1, y = 5
x = 10
local i = 1
while i < x do
local x = i * 2
print(x) -- 2, 4, 6 ...
i = i + 1
end
print(x) -- 10
if i > 20 then
local x
x = 20
print(x + 2) -- 22
else
print(x) -- 10
end
print(x) -- 10
交互模式将每一行理解为一个程序块,并立即执行,可能结果会不同
显式的界定一个块
do
-- code block
end
尽量使用局部变量
-- 习惯写法
local foo = foo -- 全局变量 foo 的值赋给局部变量 foo, 用来保存全局变量的值
if
if 条件表达式 then else end
if a < 0 then
a = 0
end
if a < b then
return a
else
return b
end
-- lua 不支持 switch
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a * b
elseif op == "/" then
r = a / b
else
error("invalid operation")
end
while
local i = 1
while a[i] do
print(a[i])
i = i + 1
end
repeat...until
repeat
line = io.read()
until line ~= ""
-- 这在 lua 中是可以执行的
local sqr = x / 2
repeat
sqr = (sqr + x / sqr) / 2
local error = math.abs(sqr ^ 2 - x)
until error < x / 10000
数值型 for
for var = exp1, exp2, exp3 do
-- 执行体
end
for i = 10, 1, -1 do
print(i) -- 10, 9, 8,...
end
for 的细节
泛型 for
for i,v in ipairs(a) do
print(v)
end
-- 打印 table 中的 key 值
for k, in pairs(t) do
print(k)
end
二种 for 类型的共同点
days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
-- 将名称转换成它在一周中的位置,索引为字符串,值为对应的位置,方便查找,逆向 table
revDays = {["Sunday"] = 1, ["Monday"] = 2 ,["Tuesday"] = 3, ["Wednesday"] = 4, ["Thursday"] = 5, ["Friday"] = 6, ["Saturday"] = 7}
x = "Tuesday"
print(revDays[x]) -- 3 打印 Tuesday 的位置
revDays = {}
for k,v in pairs(days) do
revDays[v] = k
end
local i = 1
while a[i] do
if a[i] == v then
break -- 条件语句块中的最后一条语句
end
i = i + 1
end
原文:https://www.cnblogs.com/door-leaf/p/12309514.html