运行环境

luatOS在线测试

变量

变量声明:直接赋值(全局),加local只能在当前作用域里用;

没有被声明过的变量类型都是nil,值也是nil;

可以同时给多个变量赋值,比如 a,b = 1,2

如果 a,b,c = 1,2 则c=nil

数值型:只有number,支持进制和科学计数法,支持乘幂符号,如2^5

字符串的使用

字符串:用双引号或者单引号表示,支持换行符\n

多行文本:[[……]]

字符串连接符号:”..”,如 a..b

tostring:数字转成字符串

tonumber:字符串转成数字

查看字符串长度:”#”,如 #a

函数的使用

函数:

function f(a,b)
    print(a,b)
end

返回可以用return,可以返回多个值

table的基本用途

table:什么都可以存,a = {1,”ac”,{},function() end};下标从1开始;

用#也可以获得table的长度

insert: 插入 ,如table.insert(a,”d”);table.insert(a,2,”d”)

remove: 移除 , 如 table.remove(a,2),并且返回移除的值

可以构造以字符串作为下标的table:如

a = {
a=1,
b="123",
c=function()
end
}
a["a"] = 1;

全局表_G:所有元素都在全局表中

逻辑判断

逻辑判断:不等于是~=;其他与C类似

支持 and 、or 、not

lua里数字0也代表真,nil代表假

三目运算: 如 b > 10 and “yes” or “no”

if语句

if a>10 then
    print(1)
elseif a>5 then
    print(2)
else 
    print(0)
end

循环

for循环

for i = 1,10,2 do	//从1到10 步长为2
    print(i)
end

注:在for循环里不能对i进行修改,可以break

while循环

local n = 10
while n > 1 do
    print(n)
    n = n - 1 //lua里面不支持自减自加
end

其他

string.char:可以把ascll码变为字符串

string.byte: 可以直接取出一位,如 n = string.byte(s,2)