注释

--单行注释

–[[
多行注释
多行注释
–]]

变量

  • 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
  • …:连接两个字符串
  • #:一元运算符,返回字符串或表的长度

控制流程

  1. if语句
         local a = 10
    if a > 10
    then
    print("1")
    else
    print("2")
    end
  2. 循环语句
          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

  1. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
  2. Lua table 是不固定大小的,你可以根据自己需要进行扩容。

官方文档地址

Lua 5.3