Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua能应用在很多地方,比如Redis、Nginx等等,因此,掌握一定的Lua基本语法还是有必要的。

Hello World

新建一个 hello.lua文件,输入以下内容并保存:

print("hello world")

终端输入:

lua .\hello.lua

即可输出Hello World

注释

在Lua中,单行使用 --,多行注释使用 --[[注释内容--]]

表达式

关系操作符

跟其他语言类似,Lua支持 <><=>===~=

逻辑操作符

逻辑操作有 andornot。对于操作符 and,如果第一个操作数为假,就返回第一个操作数,不然返回第二个操作数。对于操作符 or,如果第一个操作数为真,就返回第一个操作数。

字符串连接

使用 ..操作

例:

print("hello".."world")

数据类型

Lua有如下数据类型:

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。
number用于表示实数,Lua没有整数类型,只有double型。
string字符串由一对双引号或单引号来表示
functionLua中,函数是作为第一类值",可以存储在变量里,可以通过参数传递给其他函数,还可以作为其他函数的返回值。
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

变量

在Lua脚本中,如果不把变量声明威 local,无论在函数内还是函数外,均为全局变量。将该变量设置为 nil时,会回收该变量

例:

-- 变量
a = 10 -- 全局变量

function foo1()
    print("=====foo1=====")
    print(a)
    b = 11 -- 全局变量
    local c = 12 -- 局部变量
    print(c)
end

function foo2()
    print("=====foo2=====")
    print(b)
    print(c)
    b = nil
end

function foo3()
    print("=====foo2=====")
    print(b)
end

foo1()
foo2()
foo3()

-- 输出
-- =====foo1=====
-- 10
-- 12
-- =====foo2=====
-- 11
-- nil
-- =====foo2=====
-- nil

循环

for

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

for var=exp1,exp2,exp3 do  
    <执行体>  
end  

例:

-- 输出0到3
for i = 0, 3 do
    print(i)
end
print("==========")
-- 输出3到0
for i = 3, 0, -1 do
    print(i)
end
print("==========")
-- 遍历数组,#arr表示arr的长度
arr = {"a", "b", "c"}
for i = 1, #arr do
    print(arr[i])
end

-- 输出
-- 0
-- 1
-- 2
-- 3
-- ==========
-- 3
-- 2
-- 1
-- 0
-- ==========
-- a
-- b
-- c

还有类似于Golang里面的 for range,Java里面的 for each的for循环

例:

-- 遍历数组
arr = {"a", "b", "c"}
for i, v in pairs(arr) do
    print(i, v)
end

-- 输出
-- 1       a
-- 2       b
-- 3       c

while

i = 0
a = 0
while i <= 10 do
    a = a + i
    i = i + 1
end
print(a)

-- 输出:
-- 55

流程控制

if

a = 1
if a > 0 then
    print("a>0")
end

-- 输出:
-- a>0

if ... else

a = 0
if a > 0 then
    print("a>0")
else
    print("a<=0")
end

-- 输出:
-- a<=0

if ... elseif ... else

a = 0
if a > 0 then
    print("a>0")
elseif a == 0 then
    print("a=0")
else
    print("a<0")
end

-- 输出:
-- a=0

函数

在Lua中,函数可以作为一个类型的值,储存在变量中,也可以作为其他函数的返回值

-- 函数
function foo1(a, b)
    return a + b
end
function foo2()
    return foo1
end
f1 = foo1
f2 = foo2()
print(foo1(1, 1))
print(f1(1, 2))
print(f2(1, 3))

-- 输出:
-- 2
-- 3
-- 4
最后修改:2022 年 01 月 07 日
如果觉得我的文章对你有用,请随意赞赏