注释
--单行注释
--[[
多行注释
多行注释
--]]
变量
- nil:无效值,比较时需要加上双引号"",对全局变量和table复制nil,等于删除它们
- boolean:布尔值
- number:双精度类型的实浮点数
- string:字符串,单引号''或双引号""或[[]]
- function:函数
- userdata:任意存储在变量中的c数据结构
- thread:独立线路
- table:关联数组,索引可以是数字或字符串,{}创建一个空表,数值下标1开始
关键字
and break do else elseif end false for
function if in local nil not or repeat
return then true until while
作用域
默认情况下,变量都是全局的,除非显示local声明为局部变量
尽量使用局部变量,因为1.避免命名冲突2.访问局部变量比全局变量快
赋值
a = "hello" .. "world"
a,b = 10,20
-- 这里c的值为nil
a,b,c = 1,2
运算符
- 与或非:and or not
- ..:连接两个字符串
-
:一元运算符,返回字符串或表的长度
控制流程
- if语句
local a = 10 if a > 10 then print("1") else print("2") end
- 循环语句
-- while循环 while(true) do print("xxx") end -- for循环 a = {"one","two","three"} for i,v in ipairs(a) do print(i,v) end -- 另一种形式 function f(x) print("function") return x*2 end for i=1,f(5) do print(i) end -- 打印1 3 5 for i=1,5,2 dp print(i) end -- repeat循环 a = 1 repeat print(a) a = a+1 util(a > 15)
函数
function maximum(a)
local mi = 1
local m = a[mi]
for i,val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m,mi
end
-- 可变参数
function fwrite(fmt, ...) ---> 固定的参数fmt
return io.write(string.format(fmt, ...))
end
-- 统计给定可变参数个数
function foo(...)
for i = 1, select('#', ...) do -->获取参数总数
local arg = select(i, ...); -->读取参数
print("arg", arg);
end
end
表
- Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
- Lua table 是不固定大小的,你可以根据自己需要进行扩容。