Openresty最佳案例 | 第2篇:Lua入门

举报
方志朋 发表于 2018/12/22 11:36:31 2018/12/22
【摘要】 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

什么是lua

image.png

image.png


环境搭建

注意: 在上一篇文章中,OpenResty已经有了Lua的环境,这里安装的是单独的Lua环境,用于学习和开发Lua。大多数的电脑是Windowds版本的电脑,Windows版本下载地址http://luaforge.net/projects/luaforwindows/。


Linux和Mac电脑下载地址:http://luajit.org/download.html,安装命令如下:


image.png


使用IDEA开发的同学,可以通过安装插件的形式来集成Lua的环境,插件名为EmmyLua,安装插件后,在Idea的右侧栏就会出现Lua的图标,点击图标,就会出现运行Lua代码的窗口。建议使用该插件,可以免去安装Lua环境的麻烦。


第一个Lua程序

安装好环境后,我采用EmmyLua插件的形式,对Lua的入门语法进行一个简单的讲解。

打开EmmyLua的终端,在终端上输入:


image.png


按ctrl+enter,终端显示:


image.png


Lua基本数据类型

lua的基本数据类型有nil、string、boolean、number、function类型。


nil 类型

nil类似于Java中的null ,表示空值。变量第一次赋值为nil。


image.png


终端输出:


image.png


number (数字)

Number 类型用于表示实数,和 Java里面的 double 类型很类似。可以使用数学函数

math.floor(向下取整) 和 math.ceil(向上取整) 进行取整操作。


image.png


输出:


image.png


string 字符串

Lua 中有三种方式表示字符串:

1、使用一对匹配的单引号。例:‘hello’。

2、使用一对匹配的双引号。例:"abclua

3.字符串还可以用一种长括号(即[[ ]]) 括起来的方式定义


image.png


table (表)

Table 类型实现了一种抽象的“关联数组”。“关联数组”是一种具有特殊索引方式的数组,索引通常是字符串(string) 或者 number 类型,但也可以是除 nil 以外的任意类型的值。


image.png


function(函数)

在 Lua 中,函数 也是一种数据类型,函数可以存储在变量中,可以通过参数传递给其他函

数,还可以作为其他函数的返回值。


image.png


表达式

image.png


  • a and b 如果 a 为 nil,则返回 a,否则返回 b;

  • a or b 如果 a 为 nil,则返回 b,否则返回 a。


image.png


在 Lua 中连接两个字符串,可以使用操作符“…”(两个点).


image.png


控制语句

单个 if 分支 型


image.png


两个分支 if-else 型


image.png


多个分支 if-elseif-else 型:


image.png


for 控制结构

Lua 提供了一组传统的、小巧的控制结构,包括用于条件判断的 if 用于迭代的 while、repeat

和 for,本章节主要介绍 for 的使用.


for 数字型

for 语句有两种形式:数字 for(numeric for) 和范型 for(generic for) 。

数字型 for 的语法如下:


image.png


实例1:


image.png


实例2:


image.png


for 泛型

泛型 for 循环通过一个迭代器(iterator) 函数来遍历所有值:


image.png


lua的入门就到这里,因为lua语法虽少,但细节有很多,不可能花很多时间去研究这个。入个门,遇到问题再去查资料就行了。另外需要说明的是本文大部分内容为复制粘贴于OPenResty 最佳实践,感谢原作者的开源电子书,让我获益匪浅。更多内容请参考:


lua入门教程:http://www.runoob.com/lua/lua-tutorial.html


OPenResty 最佳实践: https://moonbingbing.gitbooks.io/openresty-best-practices/content/index.html



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。