lua基本语法

Lua快速入门

lua初识

Lua [1] 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。 [2] Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。 [2] 一个完整的Lua解释器不过200k,在所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

在线学习

luatos支持在线运行lua语言
在这里插入图片描述

常用语法

  • 输入hello world!

    print("hello world!")
    

    [23:29:17] 虚拟机初始化完毕
    [23:29:17] hello world!
    [23:29:17] 虚拟机已停止运行

  • 声明变量

    
    -- 声明局部变量,可以在多个文件共用
    local a = 1
     --  声明全局变量,只可在本文件局部使用
     b = 2
    
    
  • 多重赋值

    -- 多重赋值,多个变量一起赋值
    a,b = 1,2
    print(a,b)
    

    [23:43:04] 虚拟机初始化完毕
    [23:43:04] 1 2
    [23:43:04] 虚拟机已停止运行

  • 数据类型 nil

    -- nil 类型表示一种没有任何有效值,它只有一个值 – nil。
    -- 打印一个没有赋值的变量,便会输出一个 nil 值,如下所示
    print(a)
    
    

    [23:40:51] 虚拟机初始化完毕
    [23:40:51] nil
    [23:40:51] 虚拟机已停止运行

  • 数值型 number

    -- lua数值类型只有number
    -- 支持16进制
    a = 0x1
    print(a) 
    -- 支持科学记数法,如赋值2的十次方
    b = 2e10
    print(b) 
    

    [23:48:52] 虚拟机初始化完毕
    [23:48:52] 1
    [23:48:52] 20000000000.0
    [23:48:52] 虚拟机已停止运行

  • 算数运算符

    -- 加 2+5
    print(2+5)
    -- 乘 2X5
    print(2^5)
    -- lua5.3支持左移右移符号 1左移3位
    print(1<<3)
    

    [23:53:23] 虚拟机初始化完毕
    [23:53:23] 7
    [23:53:23] 32.0
    [23:53:23] 8
    [23:53:23] 虚拟机已停止运行

  • string字符串

    -- 可双引号
    a = "你好!"
    -- 可单引号
    b = '你好!'
    print(a,b)
    -- 连接字符串a和b
    ab = a..b
    print(ab)
    -- 支持转义符号 如换行 \n
    c = "开始换\n行"
    print(c)
    -- 输出字符串模板
    d = [[aaaa
    bbbbb
    ccc]]
    print(d)
    -- 可使用tostring把数值型转成字符串
    e = tostring(10)
    print(e)
    -- 可使用tonumber把字符串转成数值型,转换失败值为nil
    f = tonumber("10")
    print(f)
    -- 可使用#来获取字符串的长度,中文或者中文符号单个长度为3
    print(#a)
    

    [00:09:46] 虚拟机初始化完毕
    [00:09:46] 你好 你好!
    [00:09:46] 你好你好!
    [00:09:46] 开始换

    [00:09:46] aaaa
    bbbbb
    ccc
    [00:09:46] 10
    [00:09:46] 10
    [00:09:46] 6
    [00:09:46] 虚拟机已停止运行

  • function 函数

    -- 函数基本语法 function 后加函数名称,(...)内加参数,中间写函数体,最后用end结尾。以下两种写法
    function function_name( ... )
        -- body
    end
    f = function()
        --body
    end
    
    -- 函数基本使用
    function f(a,b)
        print(a,b)
    end
    
    f(1,2)
    

    [00:18:05] 虚拟机初始化完毕
    [00:18:05] 1 2
    [00:18:05] 虚拟机已停止运行

    -- 函数基本使用 入参比形参多,依然调用可以返回
    function f(a,b,c)
        return a,b
    end
    -- 多个返回值可以配合多重赋值语句
    local i,j = f(1,2)
    print(i,j)
    

    [00:21:26] 虚拟机初始化完毕
    [00:21:26] 1 2
    [00:21:26] 虚拟机已停止运行

  • table数字下标

    -- 语法 变量 = {} 数组内什么都可以存,使用逗号分隔即可,第一个元素下标是1.异常返回nil。 
    a = {1,"ac",{},function() end}
    print(a[1])
    -- 添加/替换指定下标数组元素
    a[5] = 123
    --打印数组长度
     print(#a)
    -- a数组新增元素d
    table.insert(a, "d")
    -- 指定插入a数组第二个位置,其余元素自动后移一位
    table.insert(a,2, "dd")
    --删除a数组中的第二个元素dd
    table.remove(a, 2)
    

    [00:34:25] 虚拟机初始化完毕
    [00:34:25] 1
    [00:34:25] 5
    [00:34:25] 虚拟机已停止运行

  • table字符串下标

    --table字符串类似与map集合
    a = {
        a = 1,
        b = "123",
        c = function()
        end,
        d = "qwe"
    }
    --打印元素a的值,需要带双引号或者单引号
    print(a["a"])
    --打印元素a的值,a表的b元素内容
    print(a.b)
    --对元素d赋值
    a["d"] = "aaaa"
    print(a.d)
    

    [00:40:27] 虚拟机初始化完毕
    [00:40:27] 1
    [00:40:27] 123
    [00:40:27] aaaa
    [00:40:27] 虚拟机已停止运行

  • 全局表_G

    --所有的变量都在全局表_G中
    a=1
    print(_G["a"])
    

    [00:42:37] 虚拟机初始化完毕
    [00:42:37] 1
    [00:42:37] 虚拟机已停止运行

  • 布尔值 真与假

    a = true
    b = false
    print(1>2)
    print(1<2)
    print(1>=2)
    print(1<=2)
    print(1==2)
    --使用~=表示不等于
    print(1~=2)
    

    [00:45:17] 虚拟机初始化完毕
    [00:45:17] false
    [00:45:17] true
    [00:45:17] false
    [00:45:17] true
    [00:45:17] false
    [00:45:17] true
    [00:45:17] 虚拟机已停止运行

    -- and、or、not的使用
    a = nil --假
    b = 0 --数字零  真
    print(a and b)
    print(a or b)
    print(not b)
    -- 利用返回可以是值,来进行短路运算
    print(b > 10 and "yes" or "no")
    

    [00:51:54] 虚拟机初始化完毕
    [00:51:54] nil
    [00:51:54] 0
    [00:51:54] false
    [00:51:54] no
    [00:51:54] 虚拟机已停止运行

  • if逻辑语

    --使用缩进代表代码块
    if 1>10 then
        print("1>10")
    elseif 1<10 then
        print("1<10")
    else
        print("no")
    end
    
    -- 在lua中 0代表 true
    if 0 then
        print("0 is true!")
    end
    

    [00:56:35] 虚拟机初始化完毕
    [00:56:35] 1<10
    [00:56:35] 0 is true!
    [00:56:35] 虚拟机已停止运行

  • 循环(for、while、repeat三种)

    -- for循环,可以使用break,打断循环
    for i=1,10 do
        print(i)
        if i == 5 then break end
    end
    print("----------")
    --可以加步长,如下面的例子,每次运行后,i的值就会加二,步长也可以是负数
    for i=1,10,2 do
        print(i)
    end
    
    

    [01:01:25] 虚拟机初始化完毕
    [01:01:25] 1
    [01:01:25] 2
    [01:01:25] 3
    [01:01:25] 4
    [01:01:25] 5
    [01:01:25] ----------
    [01:01:25] 1
    [01:01:25] 3
    [01:01:25] 5
    [01:01:25] 7
    [01:01:25] 9
    [01:01:25] 虚拟机已停止运行

    -- while循环
    local  n = 10
    while n >1 do
        iif n == 5 then break end
        print(n)
        n = n -1
    end
    

    [01:02:59] 虚拟机初始化完毕
    [01:02:59] 10
    [01:02:59] 9
    [01:02:59] 8
    [01:02:59] 7
    [01:02:59] 6
    [01:02:59] 5
    [01:02:59] 4
    [01:02:59] 3
    [01:02:59] 2
    [01:02:59] 虚拟机已停止运行

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微光•无单位

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值