欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lua语言新手简单入门教程

程序员文章站 2022-06-09 21:17:56
一、前言 lua 是一种轻量小巧的脚本语言,用标准 c 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 lua...

一、前言

lua 是一种轻量小巧的脚本语言,用标准 c 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

lua 可以应用在游戏开发、独立应用脚本、web 应用脚本、扩展和数据库插件、安全系统等场景。

笔者学习的目的主要是为了能在 web 应用(nginx、redis)中使用到 lua 脚本。

特点

  • lua脚本可以很容易的被c/c++ 代码调用,也可以反过来调用c/c++的函数。
  • lua由标准c编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
  • 以极小的体积和简单的语法提供全面的功能。[一个完整的lua解释器不过200k,在目前所有脚本引擎中,lua的速度是最快的]
  • 实现与宿主语言的简洁接口
  • 成为一个很容易嵌入其它语言中使用的语言。

特性

  • 支持面向对象编程
  • 轻量级
  • 可扩展
  • 函数式编程
  • 自动内存管理
  • 通用类型的表–table,可实现数组,哈希表,集合,对象
  • 支持闭包
  • 支持多线程
  • 支持交互式编程

二、安装

注意:请确保安装 lua 之前系统已安装 readline 和 readline-devel。如果没有则键入 yum install -y readline readline-devel 进行安装。

测试,命令行中键入 lua -v:

显示 lua 版本说明安装正确。

三、运行方式

与其他脚本语言一样,我们需要将 lua 代码编写在文件中,后缀名为 .lua。

运行该文件的代码时,只需在命令行键入 lua xx.lua 即可。

四、语法

4.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 表示一个关联数组,数组索引可以是数字或字符串。

例如:

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

注意:

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

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

变量默认值为 nil。

4.2 运算符

1) 赋值运算符

2) 算术运算符

与其他程序设计语言类似。

3) 关系运算符

与其他程序设计语言类似。

4) 逻辑运算符

5) 其他运算符

操作符 说明
.. 连接两个字符串
# 返回字符串或表的长度,如 #“lua”

4.3 流程控制

1) 条件判断,有 3 种写法。

2) 循环,有 4 种写法。

类型 说明
while 循环 在条件为 true 时,让程序重复执行语句。
for 循环 重复执行指定语句,重复次数在 for 中控制。可以遍历数字和泛型。
repeat .. until 重复执行循环,直到指定条件为真为止。
循环嵌套 循环内嵌套多个循环语句。

例如:

4.4 数组

lua 数组大小不固定且下标从 1 开始。

4.5 函数

lua 中的函数允许返回多个值。

4.6 table

table 是 lua 中的一个数据结构,类似于 java 中的 map 类型或 javascript 中的 json 对象。

lua table 使用关联数组,我们可以使用任意类型值作为数组的索引,但不能是 nil。

lua table 大小不固定。

4.7 模块和包

模块类似于一个封装库。从 lua 5.1 开始,lua 加入标准的模块管理机制,可以将一些公用的代码放在一个文件中,以 api 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合。

lua 的模块由变量、函数等已知元素组成的 table 。

例如:

创建名为 module.lua 的文件。

另一个文件引入:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。