• 脚本语言Lua的基础知识总结


    目录

    1、Lua环境安装

    1.1、Windows版本安装

    1.2、Linux版本的安装

    2、Lua基础知识

    2.1、基本语法

    2.2、数据类型

    2.3、变量

    2.4、运算符

    2.5、循环语句

    2.6、条件语句

    2.7、函数

    2.8、模块

    2.9、文件操作

    3、最后


           Lua 语言是巴西里约热内卢天主教大学里的一个研究小组于 1993 年开发的,是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。很多项目中都使用到了Lua脚本,今天我们就来介绍一下Lua的一些基础知识。

    1、Lua环境安装

    1.1、Windows版本安装

           可以到这个地址去下载Windows版本的安装包:https://github.com/rjpcomputing/luaforwindows/releases,选择合适的windows版本安装即可。双击安装后会安装SciTE工具:

    在该工具中可以编写lua脚本并运行脚本:

    1.2、Linux版本的安装

    下载源码包: curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
    解压:tar zxf lua-5.3.0.tar.gz
    安装readline库(若未安装)  :yum -y install readline-devel ncurses-devel
    进入解压目录:cd lua-5.3.0
    编译:make linux
    安装:make install

    2、Lua基础知识

    2.1、基本语法

    1)Lua支持交互式编程,在命令行中输入程序并立即查看效果;也支持脚本式编程,保存为后缀名为“.lua”的文件,执行脚本:lua xxx.lua,或在文件头加上#!/opt/lua-5.3.0/lua,直接执行:./xxx.lua。
    2)Lua每条语句后面不必加分号“;”。
    3)单行注释使用两个减号:--,多行注释使用:--[[ 多行注释]]--。
    4)Lua是区分大小写的,一般以下划线开头连接一串大写字母的名字(如 _VERSION)被保留用于 Lua 内部全局变量。

    2.2、数据类型

    1)Lua中有8种基本类型:nil(空)、boolean、number(数字)、string、userdata(自定义类型)、function(函数)、thread和table(表),可以用type()函数来检查。
    2)nil类型:表示一个无效值,它只有一个值nil。
    3)boolean类型:Lua把false和nil看作是“假”,其他的都为“真”(eg:0、空字符串等为“真”)。
    4)string类型:用单引号或双引号来表示,也可以用2个方括号“[[ ]]”表示“一块”字符串。
    可以通过“..”作字符串连接,使用“#”来计算字符串的长度。
    5)userdata类型:是用户自定义的数据,用来表示由应用程序或C语言库所创建的新类型,如:Struct和指针等。
    6)function类型:函数也是一种类型,也就是所有的函数,它本身就是一个变量。
    7)thread线程类型:表示执行的独立线路,用于执行协同程序。
    8)tablbe类型:可看作“关联数组”,数组的索引可以是数字或者是字符串;不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始;且table不会固定长度大小,有新数据添加时其长度会自动增长;没初始化的 table 都是 nil。

    2.3、变量

    1)Lua是动态类型语言,变量不需要声明,不用类型定义,给一个变量赋值即创建了这个变量,访问一个没有初始化的变量也不会出错,只是得到的结果为:nil。
    2)Lua中的变量除非用 local 显式声明为局部变量,否则全部是全局变量,即使变量在语句块或函数里。
    3)Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量,如:a,b,c = 1,2,3。
    4)当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
    a)变量个数 > 值的个数 ,按变量个数补足nil
    b)变量个数 < 值的个数,多余的值会被忽略

    2.4、运算符

    1)算术运算符:+、-、*、/、%(取余)、^(乘幂)、-(负号)。
    2)关系运算符:==、~=(不等于)、<=、>=、<、>。
    3)逻辑运算符:and、or、not(非)。
    4)连接运算符:..(连接两个字符串)。如:“hello”..“Lua”  “helloLua”
    5)一元运算符:#(计算表或字符串的长度)。
    6)运算符优先级:^、not、-(负号)、* /、+ -、..、< > <= >= ~= ==、and、or。

    2.5、循环语句

    1)While循环

    1. while conditions do
    2. statements
    3. end

    其中:用do 和 end 括起来的部分为语句块,类似于C++中用"{"和"}"括起来的部分。
    2)For循环
    a)数值for循环

    1. for var=exp1 ,exp2 ,exp3 do
    2. loop-part
    3. end

    for将用exp3作为步进值从exp1(初始值)到exp2(终止值),执行loop-part,其中步进值可以省略,默认值为1。
    b)范型for循环

    1. for var1; var2 ... varN in表或者枚举函数do
    2. loop-part
    3. end

    注意项:控制变量是局部变量,且不能修改其值;可以用break来终止一个循环。
    3)repeat…until

    1. repeat
    2. statements
    3. until conditions

    循环语句可以嵌套。

    2.6、条件语句

    1. if conditions then
    2. part1
    3. elseif conditions then
    4. part2
    5. else
    6. partsend

    1、Lua使用if..else执行条件控制语句

    2、每条判断语句后面都要加“then”;
    3、条件语句也可以进行嵌套,不支持switch语句。

    2.7、函数

           函数的格式如下:

    1. funetion function_name ( arg1 ,arg2... , argn )
    2. function_body
    3. return result_paramsend

    1)函数代码块以function关键字开头,后跟函数名、参数,以end关键字结尾。
    2)Lua中除了在函数前面使用关键字local的为局部函数,其他都是全局函数。
    3)result_params:函数返回值,Lua函数支持返回多个结果值,每个值以逗号隔开。
    4)Lua中可以将函数作为参数传递给函数。
    5)Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 ... 表示函数有可变的参数。

    2.8、模块

    1)Lua模块类似于一个封装库,把一些公用的代码放在一个文件里,以API接口的形式在其他地方调用。模块也是由变量、函数等已知元素组成的table。
    2)可以通过require函数来加载模块:require("<模块名>")。

    2.9、文件操作

    1)Lua I/O库用于读取和处理文件,分为简单模式、完全模式。
    2)简单模式:拥有一个当前输入文件和一个当前输出文件,并对这些文件可以进行读写相关的操作。

    1. --打开文件,filename为文件名,mode是打开文件的方式
    2. file = io.open (filenane , mode)
    3. --设置默认输入文件
    4. io.input(file)
    5. --设置默认输出文件
    6. io.output(file)
    7. --读取文件内容,param是读取的模式
    8. io.read(param)
    9. --在文件最后一行写入内容
    10. io.write ( "--Test--")
    11. --关闭文件
    12. io.close(file)

    3)完全模式:使用外部的文件句柄来实现。通常在需要同一时间处理多个文件时使用。
    使用file:function_name代替io.function_name。

    1. --打开文件
    2. file = io.open (filename , mode)
    3. --读取文件内容
    4. file : read(param)
    5. --在文件最后一行写入内容
    6. file :write("--testr--")
    7. --关闭文件
    8. file : close (file)/

    3、最后

           Lua脚本的加入,使得在很多应用中既可以减少开销又可以功能复用,为应用程序提供灵活的扩展和定制功能。它也是一个轻巧的脚本语言,值得更进一步学习与应用。

  • 相关阅读:
    VS2019 如何添加自定义代码片段
    末端物流自动配送车规模之战,毫末智行如何赢下三个赛点?
    makefile基础(构建多文件程序)
    Linux 串口工具 cutecom
    ansible服务搭建与windows引用
    免费、强大的笔记软件推荐:Obsidian、Zettlr、Joplin、FlowUs
    Linux内核移植之主频设置
    LeetCode #83. 删除排序链表中的重复元素
    【算法】三层嵌套循环的时间复杂度
    ROS实验笔记之——FAST-LIVO
  • 原文地址:https://blog.csdn.net/chenlycly/article/details/126083179