• 学习Lua脚本语言


    一、运行方式

    Lua脚本的后缀名为 .lua。
    运行该文件的代码时,只需在命令行键入 lua xx.lua 即可。

    二、语法

    1、数据类型

    Lua 中包含 8 种基本数据类型,即:nil、boolean、number、string、userdata、function、thread 和 table。

    数据类型说明
    nil无效值,在条件表达式中表示 false
    boolean布尔值,包含 true 和 false 两个值
    number表示双精度类型的实浮点数
    string表示字符串,通过双引号或单引号括住
    userdata任意存储在变量中的 C 数据结构
    function表示 C 或 Lua 编写的函数
    thread执行的独立线程,用于执行协同程序
    table一个关联数组,数组索引可以是数字或字符串
    a=10
    str = "hello world"
    
    • 1
    • 2

    不需要声明变量类型,我们可以通过 type() 判断变量类型。

    注意:

    Lua 变量有三种类型:全局变量、局部变量和表中的域;

    默认情况下,不管在哪声明的变量都是全局变量。通过 local 修饰的变量为局部变量;

    变量默认值为 nil。

    2 运算符

    1. 赋值运算符
    str="hello".."world" -- 通过 .. 连接字符串
    a,b=10,15 -- a=10,b=15
    c,d,e=1,2 -- c=1,b=2,e=nil
    
    • 1
    • 2
    • 3
    1. 逻辑运算符
    print(true and false) -- 与
    print(true or false) -- 或
    print(not true) -- 非
    
    • 1
    • 2
    • 3
    1. 其他运算符
    操作符操作符
    . .连接两个字符串
    #返回字符串或表的长度,如 #“lua”

    3 流程控制

    -- if 语句
    if(true)
    then
     print("hello")
    end
    -- if .. else 语句
    a,b=10,15
    if(a>b)
    then
     print(a)
    else
     print(b)
    end
    -- if 嵌套
    c=20
    if(c>10)
    then
     if(c<30)
     then
     print(c)
     end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 循环,有 4 种写法
    while 循环	在条件为 true 时,让程序重复执行语句。
    for 循环	重复执行指定语句,重复次数在 for 中控制。可以遍历数字和泛型。
    repeat .. until	重复执行循环,直到指定条件为真为止。
    循环嵌套	循环内嵌套多个循环语句。
    
    -- while 循环
    a=10
    while(a>0)
    do
     print(a)
     a=a-1
    end
    -- for 循环,遍历数字
    for a=1,10,1 do
     print(a)
    end
    -- repeat .. until 循环
    a=10
    repeat
     print(a)
     a=a-1
    until(a<1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 数组
      Lua 数组大小不固定且下标从 1 开始。
    arr={"h","e","l","l","o"}
    -- 此处使用遍历数字方式
    for index=1,#arr do
     print(arr[index])
    end
    -- 此处使用遍历泛型方式
    for i,v in ipairs(arr) do
     print(i,v)
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4)函数

    -- 案例 1
    function calc(a,b,c)
     return a+b+c
    end
    result=calc(1,2,3)
    print(result)
    -- 案例 2
    function getCalc(a,b,c)
     return a,b,c
    end
    r1,r2,r3=getCalc(1,2,3)
    print(r1,r2,r3)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Lua 中的函数允许返回多个值。
    5)table
    table 是 Lua 中的一个数据结构,类似于 Java 中的 Map 类型或 Javascript 中的 JSON 对象。
    Lua table 使用关联数组,我们可以使用任意类型值作为数组的索引,但不能是 nil。
    Lua table 大小不固定。

    person={}
    person.name="jack"
    person.age=20
    print(person[1])
    print(person.name)
    print(person["age"])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6)模块和包
    模块类似于一个封装库。从 Lua 5.1 开始,Lua 加入标准的模块管理机制,可以将一些公用的代码放在一个文件中,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合。
    Lua 的模块由变量、函数等已知元素组成的 table 。
    例如:
    创建名为 module.lua 的文件。

    module={}
    module.index=1
    function module.sum(a,b)
     return a+b
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5

    另一个文件引入:

    -- 此处 module 是文件名
    require "module"
    -- 此处 module 是引入模块中定义的名称
    print(module.index)
    print(module.sum(1,2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    第07章 连接Hadoop集群
    0基础学习VR全景平台篇第121篇:认识视频剪辑软件Premiere
    PHP语言、B/S手术麻醉临床信息管理系统源码
    RabbitMQ-管理界面介绍
    manhattan_slam环境配置
    【LeetCode热题100】--136.只出现一次的数字
    Java @PreDestroy 注解的使用
    【Linux】进程状态详解
    Java 时区
    【C#】C#调用进程打开一个exe程序
  • 原文地址:https://blog.csdn.net/qq_42603181/article/details/127982710