基础:

用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

注释:
  • 单行注释
--
  • 多行注释
--[[
 多行注释
 多行注释
 --]]
变量:
  • 局部变量
-- 局部变量赋值
local b=2
  • 全局变量
-- 全局变量赋值
a=1
  • 如果没赋值,则为nil,类似Java的null
Lua的数据类型:

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回

数据类型

描述

nil

表示一个无效值(在条件表达式中相当于false)

boolean

true 或者 false

number

双精度浮点数

string

双引号或者单引号

function

由c或者lua编写的函数

userdata

表示任意存储在变量中的C数据结构

thread

表示执行的独立线路,用于执行协同程序

print(type("Hello world"))      --> string
print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean
print(type(nil))                --> nil
流程控制:
if条件语句
  • if语句
if(布尔表达式)then
   --[ 在布尔表达式为 true 时执行的语句 --]
end
  • if - else 语句
if(布尔表达式)then
   --[ 布尔表达式为 true 时执行该语句块 --]
else
   --[ 布尔表达式为 false 时执行该语句块 --]
end
循环语句
  • while循环
while(condition)do
   Statements
end
  • 实例
a=10
while( a < 20 )do
   print("a 的值为:", a)
   a = a+1
end
  • for循环
for var=exp1,exp2,exp3 do  
<执行体>  
end

var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 执行体,exp3 是可选的,如果不指定,默认为1

  • repeat…until语句 [满足条件结束]
repeat
   Statements
until( condition )
函数

lua中也可以定义函数,类似于java中的方法

--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)

    if (num1 > num2) then
        result = num1;
    else
        result = num2;
    end

    return result; 
end
-- 调用函数
print("两值比较最大值为 "..max(10,4))
print("两值比较最大值为 "..max(5,6))

PS:..表示拼接

Table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。

Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。

-- 初始化表
mytable = {}

-- 指定值
mytable[1]= "Lua"

-- 移除引用
mytable = nil
模块

模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。

-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}
-- 定义一个常量
module.constant = "这是一个常量"
-- 定义一个函数
function module.func1()
    print("这是一个公有函数")
end
local function func2()
    print("这是一个私有函数!")
end
function module.func3()
    func2()
end
return module
  • require 函数
    require 用于 引入其他的模块,类似于java中的类要引用别的类的效果
require("<模块名>")
require "<模块名>"

我们可以将上面定义的module模块引入使用,创建一个test_module.lua文件,在其中使用module模块内的方法

-- test_module.lua 文件
-- module 模块为上文提到到 module.lua
require("module")
print(module.constant)
module.func3()