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/luaprint("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 的保留关键字。保留关键字不能作为常量或变量或其他用户自定义标示符:

and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while goto    

一般约定,以下划线开头连接一串大写字母的名字(比如 _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 表示执行的独立线路,用于执行协同程序
table Lua 中的表(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

Lua 教程 | 菜鸟教程相关推荐

  1. python菜鸟教程字典-python教程菜鸟教程学习路线

    python教程菜鸟教程学习路线,需要学Python 环境搭建.Python 中文编码.Python 基础语法.Python 变量类型.Python 运算符.Python 条件语句.Python 循环 ...

  2. python教程菜鸟教程学习路线

    python教程菜鸟教程学习路线,需要学Python 环境搭建.Python 中文编码.Python 基础语法.Python 变量类型.Python 运算符.Python 条件语句.Python 循环 ...

  3. Python基础教程-菜鸟教程学习笔记1

    Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...

  4. python基础菜鸟教程-菜鸟教程学习python

    1.杂货 *items(): 方法以列表返回可遍历的(键, 值) 元组数组. *在序列中遍历时,索引位置和对应值可以使用 enumerate()函数同时得到 *同时遍历两个或更多的序列,可以使用 zi ...

  5. python基础教程菜鸟教程-python基础菜鸟教程,Python的基础语法

    原标题:python基础菜鸟教程,Python的基础语法 什么是Python?Python是一门简单直观的编程语言,并且目前是开源的,可以方便任何人使用. Python的开发哲学:用一种方法,最好是只 ...

  6. python基础教程菜鸟教程-终于懂得python入门菜鸟教程

    Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的python入门 ...

  7. Vue.js 教程---菜鸟教程

    文章目录 教程 安装 起步 模板语法 插值 指令 用户输入 过滤器 缩写 条件语句 循环语句 计算属性 监听属性 样式绑定 事件处理器 表单 组件 组件 - 自定义事件 自定义指令 钩子 路由( vu ...

  8. php初始化对象菜鸟教程,菜鸟教程php面向对象

    菜鸟教程php教程改背景颜色 在PHP页面中有来没有HTML代码. 如果自有的话找bai到 这个标签然后替du换成这个:zhi 既可调成自己需要dao的颜色. 如果在PHP页面上没有HTML代码的话, ...

  9. MySQL 教程---菜鸟教程

    文章目录 MySQL 教程 登录 MySQL 数据库操作 数据类型 创建数据表 删除数据表 插入数据 查询数据 WHERE 子句 UPDATE 更新 DELETE 子句 LIKE 子句 UNION 操 ...

最新文章

  1. python语言入门m-Python学习基础篇 -1
  2. TCP三次握手及四次挥手详细图解
  3. 《Flask Web开发——基于Python的Web应用开发实践》代码使用方法
  4. 我与ARM的那些事儿2JINLK烧录nor flash
  5. CentOS通过进程ID查询运行文件的路径方法
  6. php开发我的收藏,我的收藏列表 · 老猫带你玩转ThinkPHP5 API开发 · 看云
  7. linux工作日志软件,Linux桌面日记本(RedNotebook)
  8. 生成的exe程序默认以管理员权限启动
  9. H5视频会议,直播,通话,教学,支持Webrtc、rtmp、sip、rtsp转协议、IPCAM、白板、桌面共享、免插件、web全平台、视频融合系统研发笔记。...
  10. python爬虫之糗事百科
  11. Excel批量合并相同表头的表格
  12. react-native-webrtc之采坑之旅
  13. 史上最通俗易懂的理解云计算
  14. 【蓝桥杯】【Python】次数差
  15. RabbitMQ学习笔记(一)
  16. 申请高新技术企业认定需要多少专利?
  17. php 实现查询百度排名,查询百度关键词排名代码 php
  18. 【Cloudaily】Elastic Stack 5.2.0 版本发布,Uber免费开放全球20亿行程数据
  19. 数据结构------最小生成树之Kruskal算法
  20. Golang 优化之内存对齐

热门文章

  1. spring中配置quartz定时器
  2. 剑指offer31-栈的压入、弹出序列
  3. 贪婪模式与非贪婪模式
  4. setTimeout和setInterval
  5. 使用ConcurrentLinkedQueue惨痛的教训
  6. 感想2-对于组件化的一些思考
  7. 用例子来区分4种文法
  8. 客户端本地存储的比较及使用window.name数据传输
  9. 10-1-Spring Boot综合项目实战-准备工作
  10. java restcontroller_Spring框架:@RestController与@Controller