Lua特色:小,启动块,功能强大,方便与数组语言进行交互,与C++/C进行交互,Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua官网:https://lua.org/

Lua语言默认是动态类型(弱类型的)是大小写敏感的,默认是全局变量的,自带GC(内存垃圾回收)的。

Lua语言的变量类型:

nil 空 boolean布尔 number数字(不区分整数浮点数,都是double类型) string字符串 function函数 userdata允许语言本身进行扩展,违背定义的类型可以直接被注册成C/C++实现自己的一个数据结构去用 thread线程 table(难点)

(内置变量尽量不用_G这种类似的开头)

不加入修饰符的话,lua中的变量默认是全局的

local a(局部变量)

注释 –单行 [[]]多行 [==[ ]==]嵌套

赋值 多复制 a,b=123,’asd’ a,b=b,a

顺序 分支 循环

if age>18 then
  print()
elseif age>80 then --elseif中没有空格
  print()
else
  print()
end

for i=1,10,2 do
  print()
end

while a<=10 do
  print()
  if a>=8 then
      break
   end
end

repeat untill  ——类似其它语言中的do...while
a=1
repeat
   print(1)
   a=a+2
until a>=10

与其他语言中不同的是,在lua语言中0是true而不是false

运算 + – * / //(整除) % ^(阶乘)

没有 ++ — += continue

关系运算 > < >= <= == ~=(不等于)

逻辑运算 and or not(逻辑运算取反的优先级比较高)

位运算

table基础

lua中唯一的一个内置数据结构table,定义:a={1,2,3,4,5,“a”,“b”,x=123,y=456,pos={q=123,w=456,[“z”]=789}}

print(a.pos.z)

a.z=789

nil不能做键值 即为键值对1 2 3 4 5 6 7 x y

print(a[1]) ——下标从1开始,但可以有变量名/键值对 为下标 print(a[x]) 123

定义访问 table.key语法糖 tableXXX[“key”]

a[“z”]=789 print(a.z)

遍历 for k,v in pairs(a) do –k v即为键和值

print(k,”:”,v)

end

存储的顺序是不确定的,尤其是自定义给定的键值,对于直接基于的下表时,是用哈希表的方式进行存储的,也就是说不保证定义的顺序就是存储的顺序

遍历 for k,v in ipairs(a) do –ipars不遍历自定义键值

print(k,”:”,v)

end

遍历 pairs ipairs后边这个不遍历自定义下标

–函数

add=function(a,b)

return a+b

end

print(add(1,2))