Lua 教程 | 菜鸟教程

    科技2022-07-21  768

    Table of Contents

    Lua 教程

    设计目的

    Lua 特性

    Lua 应用场景

    第一个 Lua 程序

    Lua 环境安装

    Linux 系统上安装

    Lua 基本语法

    第一个 Lua 程序

    交互式编程

    脚本式编程

    实例

    注释

    单行注释

    多行注释

    标示符

    关键词

    全局变量

    Lua 数据类型

    实例


     

    Lua 教程

    https://www.runoob.com/lua/lua-tutorial.html


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

    Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。

     

    设计目的

    其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。


    Lua 特性

    轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。其它特性: 支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

    Lua 应用场景

    游戏开发独立应用脚本Web 应用脚本扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench安全系统,如入侵检测系统

    第一个 Lua 程序

    接下来我们使用 Lua 来输出"Hello World!"

    print("Hello World!")

     

    Lua 环境安装

    https://www.runoob.com/lua/lua-environment.html


    Linux 系统上安装

    Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.0版本进行安装:

    curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz tar zxf lua-5.3.0.tar.gz cd lua-5.3.0 make linux test make install

     

    Lua 基本语法

    Lua 学习起来非常简单,我们可以创建第一个 Lua 程序!


    第一个 Lua 程序

    交互式编程

    Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。

    Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:

    $ lua -i $ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio >

    在命令行中,输入以下命令:

    > print("Hello World!")

    接着我们按下回车键,输出结果如下:

    > print("Hello World!") Hello World! >

    脚本式编程

    我们可以将 Lua 程序代码保存到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua 的脚本文件中:

    print("Hello World!") print("www.runoob.com")

    使用 lua 名执行以上脚本,输出结果为:

    $ lua hello.lua Hello World! www.runoob.com

    我们也可以将代码修改为如下形式来执行脚本(在开头添加:#!/usr/local/bin/lua):

    实例

    #!/usr/local/bin/lua print("Hello World!") print("www.runoob.com")

    以上代码中,我们指定了 Lua 的解释器 /usr/local/bin directory。加上 # 号标记解释器会忽略它。接下来我们为脚本添加可执行权限,并执行:

    ./hello.lua Hello World! www.runoob.com

    注释

    单行注释

    两个减号是单行注释:

    --

    多行注释

    --[[ 多行注释 多行注释 --]]

    标示符

    Lua 标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。

    最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。

    Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。以下列出了一些正确的标示符:

    mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal

    关键词

    以下列出了 Lua 的保留关键字。保留关键字不能作为常量或变量或其他用户自定义标示符:

    andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhilegoto  

    一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。


    全局变量

    在默认情况下,变量总是认为是全局的。

    全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。

    > print(b) nil > b=10 > print(b) 10 >

    如果你想删除一个全局变量,只需要将变量赋值为nil。

    b = nil print(b) --> nil

    这样变量b就好像从没被使用过一样。换句话说, 当且仅当一个变量不等于nil时,这个变量即存在。

     

    Lua 数据类型

    https://www.runoob.com/lua/lua-data-types.html


    Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

    Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

    数据类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean包含两个值:false和true。number表示双精度类型的实浮点数string字符串由一对双引号或单引号来表示function由 C 或 Lua 编写的函数userdata表示任意存储在变量中的C数据结构thread表示执行的独立线路,用于执行协同程序tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

    我们可以使用 type 函数测试给定变量或者值的类型:

    实例

    print(type("Hello world"))      --> string print(type(10.4*3))             --> number print(type(print))              --> function print(type(type))               --> function print(type(true))               --> boolean print(type(nil))                --> nil print(type(type(X)))            --> string

     

    Processed: 0.013, SQL: 8