a, b = 4, 3 print(a < b) print(a <= b) print(a == b) print(a ~= b) -- 不等于 print(a > b) print(a >= b)
逻辑运算
a, b = true, false print(a and b) -- 与 print(a or b) -- 或 print(not a) -- 非 print(a andnot b) -- 即其他语言中的 a && !b
条件判断 循环
while循环
local num = 1 while (num < 5) do print("num value is:", num) num = num + 1 end
for循环
-- i从10变为1,每次变动量为-1 -- 第三个参数为可选默认为1,参数二只会在一开始求值,之后不会再进行运算 for i = 10, 1, -1do print(i) end
f = function(x) print("in f(x)") return x * 2 end
for i = 1, f(5) do print(i) end
repeat…until 循环
local num = 11 repeat print("num value is:", num) num = num + 1 until num > 15
if 条件判断
在lua中 0为true,nil可以当做false
if (0) then print("0 is true") end
if elseif else
local age = 27 if age < 18then print("age less than 18") elseif age < 25then print("age less than 25") elseif age < 30then print("age less than 30") else print("age more than 30") end
break
local num = 11 repeat print("num value is:", num) num = num + 1 if num > 15then break-- break跳出循环 end until num > 20
函数
普通函数
localfunctionmain() print("this is a local function") end
函数赋值给变量
local main = function() print("this is a local function") end
函数带返回值
localfunctionmin(a, b) if a < b then return a else return b end end
函数作为参数
local p = function(res) print("print self style", res) end
localfunctionmain(a, b, p) p(a + b) end
main(1, 2, p)
返回多个值
localfunctionmin(a) local sum = 0 local factorial = 1 for i, v inpairs(a) do sum = sum + v factorial = factorial * v end return sum, factorial end
local a, b = min({1, 2, 3, 4}) print(a, b)
可变参数
localfunctionaverage(...) local result = 0 localarg = { ... } for i, v inpairs(arg) do result = result + v end return result / #arg end
local a = {"apple", "orange", "peach"} -- 不传入位置的话,默认在数组尾部插入 table.insert(a, 1, "pear") print(a[1])
table拷贝元素到另一个table,合成一个新table返回
local array = { "a", "b", "c" } -- 把array从1到3的元素数组,拷贝到另一个table的2位置开始 -- 如果没有传另一个table,默认使用原数组 for i,v inpairs(table.move(array, 1, 3, 2)) do print(v) -- 输出 a a b c end
local src = {10, 20, 30, 40} local dest = {'a', 'b', 'c', 'd'}
for i, v inpairs(table.move(src, 1, 2, 1, dest)) do print(v) -- 输出 10, 20 , 'c', 'd' end
table排序
local array = { "d", "c", "a", "b"}
local f = function(a, b)-- 创建排序函数 returnstring.byte(a) - string.byte(b) < 0 end