4.2 Lua语法入门

一、初始Lua

  1. Lua是轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能,官网:http://www.lua.org/

  2. 安装(Mac)

    curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
    tar zxf lua-5.3.4.tar.gz
    cd lua-5.3.4
    make macosx test
    sudo make install

    备注:可以使用lua -v查看是否安装完成

    进入lua的命令行方式:直接输入lua回车

  3. 入门:

    1. 新建文件:hello.lua

    2. 编辑文件:

      pring("hello world")
    3. 运行

      lua hello.lua

      备注:在文件目录,看控制台输出

二、变量和循环

  1. 数据类型

    数据类型
    描述

    nil

    这个最简单,只有值nil属于该类,标识一个无效值(在条件表达式中相当于false)

    boolean

    包含两个值:true和false

    number

    表示双精度类型的实浮点数

    string

    字符串,由一对双引号或单引号来表示

    function

    由C或Lua编写的函数

    table

    Lua中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在Lua里,table的创建是通过"构造表达式"来完成,最简单的构造语法是{},用来创建一个空表

  2. 可以使用type函数测试给定变量或值的类型

    type("hello")
    type(10*3)
  3. 声明变量

    -- 声明字符串
    local str = 'hello'
    
    -- 声明数字
    local num = 21
    
    -- 声明布尔类型
    local flag = true
    
    -- 声明数组,以key为索引的table
    local arr = {'java', 'python', 'lua'}
    
    -- 声明table,类似java的map
    local map = {name='Jack', age=21}

    备注:字符串的拼接方式:local str1 = str .. 'world' 用..来拼接

  4. 访问table中的元素

    -- 访问数组,lua数组的角标从1开始
    pring(arr[1])
    
    -- 访问table
    pring(map['name'])
    pring(map.name)
  5. 循环:数组、table都可以利用for循环来遍历

    local arr = {'java', 'python', 'lua'}
    local map = {name='Jack', age=21}
    
    -- 遍历数组
    for index, value in ipairs(arr) do
        print(index, value)
    end
    
    -- 遍历table
    for index, value in pairs(map) do
        print(index, value)
    end

    解释:

    ​ do:循环开始

    ​ end:循环结束

    ​ ipairs:解析数组,解析成键值对,使用index接收角标,value接收值

    ​ pairs:解析map,解析成键值对,使用index接收键,value接收值

三、条件控制、函数

  1. 函数定义语法

    function 函数名(参数1,参数2,参数3...) 
        -- 函数体
        return 返回值
    end

    举例:打印数组的函数

    function printArr(arr)
        for index, value in ipairs(arr) do
            print(index, value)
        end
    end
  2. 条件控制语法

    if(布尔表达式)
    then
        -- 布尔表达式为true时执行该语句块
    else
        -- 布尔表达式为false时执行该语句块
    end
    1. 与Java不同,lua布尔表达式中逻辑运算用的不是符号,而是英文单词

      操作符
      描述
      示例

      and

      逻辑与操作符

      (A and B)

      or

      逻辑或运算

      (A or B)

      not

      逻辑非操作符

      not(A and B)

最后更新于

这有帮助吗?