Lua脚本快速入门

Lua 区分大小写

前提

本机安装好Lua,Lua安装步骤Google即可

基础

注释

-- 这是单行注释
-- [[
  这是多行注释
  这是多行注释
-- ]]

保留关键字

保留关键字文档地址

变量

变量未声明、未初始化时的类型

变量未声明、声明未初始化的时候默认值均为nil

局部变量

变量使用local 关键字修饰,如

-- 这是本地变量
local a = 10
function max() 
    -- 这也是本地变量
    local a = 10
end

全局变量

没有local关键字的即为全局变量,如

-- 这是全局变量
a = 10

注意:即使是在函数内的变量,只要没有local关键字修饰,也是全局变量

function max()
    a = 10
end
全局变量保存在哪?

保存在一个table表中,有关_G的一些说明

全局变量不删除有哪些影响?

目前在官方文档以及书籍中没有看到有关全局变量不删除有哪些影响。而且书籍中也提出说,使用者无需关心Lua的内存,Lua的内存管理是自动的

全局变量如何删除?

将nil赋值给全局变量即可

a = 10
-- 删除全局变量
a = nil

多个变量初始化

文档地址

多个变量初始化基本格式为:多个变量依次在等号左边,对应的值依次在等号右边

local a, b = 10, 20

当右边的值的个数少于左边变量的个数,则未找到对应值得变量为lua中的默认值nil

a, b = 10

当右边的值的个数多于左边变量的个数,则多于的值会被自动忽略

a, b = 10, 20, 30

数据类型

官方文档

判断一个变量是什么类型使用type

type(123)
  • nil 空

    nil做比较时应该加上引号

    type(X) == 'nil'
    
  • boolean

  • number 双精度的浮点数

  • string 单引号或双引号

    使用#来计算字符串长度

    local string str = 'message'
    print("字符串长度为:", #str)
    

    拼接字符串的另外一种常见写法

    local msg1 = 'msg1'
    print(msg1 .. 'append' .. 'builder')
    

    注意 这种写法字符串只能是局部变量

    字符串常用操作文档,包括查找、大小写转换、截取、拼接 等

  • function

    Lua的函数可以返回多个值,每个值之间用逗号隔开

    function max()
        a, b = 10, 20
        return a, b
    end
    -- 调用函数
    max()
    

    函数声明之后要进行调用

  • table

还有其他几个类型,没有列出,是因为目前工作中暂时用不到

条件表达式

if

local a, b = 10, 10
if (a == b) then
    print("if表达式")
end

if else

local a = 10
if (a == c) then

else
    print("if-else表达式")
end

if elseif嵌套

local a, b = 10, 10
if (a == c) then

elseif (a == d) then

elseif(a ==b ) then
    print("if-elseif表达式")
end

数组

数组声明

array = {'index1', 'index3'}

循环

while循环

a = 10
while (a < 20) do
    a = a+1
    if (a > 18) then
        break
    end
    print("value of a:", a)
end

for循环

for i = 10, 1, -1 do
print("value of i:", i)
end

和数组结合使用,使用内置的ipairs函数

local array = {'jack', 'tom', 'bob'}
for k, v in ipairs(array) do
    print("本次循环打印value:", v)
    print('本次循环打印key:', k)
end

repeat…until循环

repeat相当于do-while,无论如何,起码都会执行一次循环

b = 10
repeat
    b = b+1
    print("value of b:", b)
until(b > 15)

错误处理

目前这一部分实际上并没有进行处理过

Lua脚本中调用Redis

使用redis.call,redis.开头的相关命令文档

local rc, rl, ll, key, value = redis.call, redis.log, redis.LOG_NOTICE, KEYS[1], ARGV[1]
local result = rc("SETEX", key, 60, value)
print("result value is:", result)

函数库

Lua内置函数快速查询

官方文档最下面的类库列表中可以快速找到不认识、不了解的函数,以及官方教程中列出的Lua标准库

资源

示例代码

本文示例代码

文档

IDEA插件

  • EmmyLua,建议安装该插件,可以很方便的进行Lua的语法提示,以及debug调试
    在这里插入图片描述
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐