`
avenje
  • 浏览: 13477 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

(1)LUA程序设计-开篇(beginning)

 
阅读更多

1.LUA介绍

LUA是一种可扩展的程序设计语言,它被设计成支持一般数据描述工具的处理程序,它对面向对象編程,函数式編程,数据驱动编程也提供了很好的支持。LUA希望能够为一种功能强大的,轻量型的,可嵌入的脚本语言,以便供任何程序使用。LUA的实现库 依赖于用纯C,通用的标准C/C++子集。

作为一种可扩展的程序设计语言,LUA并没有MAIN程序的概念,它只是嵌入于宿主程序当中使用。主机程序调用方法去执行一段LUA,可以读写LUA变量,可以注册被LUA调用的C函数。尽管采用了C函数,LUA可以被增强以应对各种各样的不同领域。因此可以创建自定义的程序语言,共享同一个语法框架。LUA发布包里包含一个样本主机程序,叫LUA(解释器)。它利用LUA库提供一个完整,独立的解释器,用于交互式或批量使用。

 

 

梦之幻时尚睡衣纺 http://shop.paipai.com/442560143

Lua is an extension programming language designed to support general procedural programming with data description facilities.It also offers good support for object-oriented programming,functional programming, and data-driven programming.Lua is intended to be used as a powerful, lightweight,embeddable scripting language for any program that needs one.Lua is implemented as a library, written inclean C ,the common subset of StandardC and C++.

Being an extension language, Lua has no notion of a "main" program:it only worksembedded in a host client,called theembedding program or simply thehost .The host program can invoke functions to execute a piece of Lua code,can write and read Lua variables,and can register Cfunctions to be called by Lua code.Through the use of Cfunctions, Lua can be augmented to cope with a wide range of different domains,thus creating customized programming languages sharing a syntactical framework.The Lua distribution includes a sample host program calledlua ,which uses the Lua library to offer a complete, standalone Lua interpreter,for interactive or batch use.

2。Linux下LUA的编绎安装

2.1下载:

 

 

梦之幻时尚睡衣纺 http://shop.paipai.com/442560143

在http://www.lua.org/download.html下载LUA源码。目前最新版本是5.2.1 (lua-5.2.1.tar.gz )

2.2编译(terminal 操作)

首先确保存你机上安装了libreadline-dev包,如果没有安装,先安装

命令:sudo apt-cache search libreadline-dev 查找

sudo apt-get install libreadline-dev 安装

然后再进行编译操作(假设解压目录为/home/aven/下)

移动: mv lua-5.2.1.tar.gz /home/aven/

解压: lua-5.2.1.tar.gz ,tar -zxvflua-5.2.1.tar.gz

进到lua-5.2.1目录下,make后,显示该版本支付的OS平台,由于我的平台是UBUNTU,所以选择LINUX平台,输入make linux,执行完毕后,LUA就编译安装了。

3.LUA相关术语/基本概念

3.1 LUA脚本的调用执行方式

a. lua xxx.lua 加载lua文件,lua文件内可以是多条语句,和自定义函数的命令集合,多条语句间可以用空白格隔开,也可以用分号

b. 直接运行lua解释器,进入到交互模式,输入lua脚本代码,也可以在交互模式下采用dofile('xxx.lua'),导入源文件,假设xxx.lua里定义了fuck函数,那么通过dofile后,在交互下可以调用fuck函数。(交互模式下的退出方式 os.exit()或都CTRL+D)

3.2 程序块

如上所述(as stated above),一个lua源文件,或者交互模式下一行代码,都被称为一个chunk程序块.程序块内,如果有多条语句,语句与语句之间可以用空白格隔开,也可以用分号隔开,一行可以输入多条语句,可用空白,或分号隔开。

3.3 lua解释器的常用参数选项wjxv

lua -e "xxx lua code" 将脚本代码直接用lua解释器执行

lua -i 表示进入到交互模式

lua -l fuck 表示在指定路径下查找并加载fuck库文件

3.4 lua 参数arg table

lua -i script a b c

[-2] [-1] [0] [1] [2] [3]

lua解释器在执行前,会用所有命令行参数创建一个名为 arg的table,script的索引始终为0。

eg.

lua -i -l a -l b -e "print('hello word')"

先加载a,再加载b,再执行打印,最后进入交互模式

4.词法

a.标识符命名,数字字母下划线构成,不能以数字开头,(以_开头时,最好不要以_+大字母命令,因为LUA有一些内置的就是以这种形式命名的,如_PROMPT,_ENV,怕与之冲突)

b.区别大小写

c.不能以内置保留字作标识符

5.注释

行注释 --

块注释 ---[[(去掉一个‘-’,块注释便不起作用)

--]]

 

 

梦之幻时尚睡衣纺 http://shop.paipai.com/442560143

6.全局变量不需要声明,只要将该变量置非nil值即可,如果要删除该全局变量,只需要将其值置为nill即可。(后面将讲到8种基本数据类型时,再谈nil)

分享到:
评论

相关推荐

    lua-nginx-module-0.10.13

    《深入理解Lua-Nginx-Module 0.10.13》 Lua-Nginx-Module,简称lua-nginx-module,是Nginx服务器的一个重要扩展模块,它将强大的Lua脚本语言集成到Nginx中,允许用户在Nginx配置文件中直接编写Lua代码,极大地增强...

    lua-nginx-module-0.10.9rc7

    1. **获取源码**:从官方仓库或镜像站点下载lua-nginx-module-0.10.9rc7的压缩包,并解压到工作目录。 2. **编译Nginx**:在编译Nginx时,需要将lua-nginx-module源码路径作为参数传递给`--add-module`选项。同时,...

    lua-nginx-module-master.zip

    1. **模块安装**:首先,你需要解压"lua-nginx-module-master.zip"并将其添加到Nginx的源代码构建路径中。然后,使用`--add-module`选项配置Nginx的编译过程,指定lua-nginx-module的源代码目录。完成编译和安装后,...

    所有版本LUA源码

    lua-5.3.5 lua-5.3.4 lua-5.3.3 lua-5.3.2 lua-5.3.1 lua-5.3.0 lua-5.2.4 lua-5.2.3 lua-5.2.2 lua-5.2.1 lua-5.2.0 lua-5.1.5 lua-5.1.4 lua-5.1.3 lua-5.1.2 lua-5.1.1 lua-5.1 lua-5.0.3 lua-5.0.2 lua-5.0.1 ...

    lua-resty-template

    而lua-resty-template和大多数模板引擎是类似的,大体内容有: 模板位置:从哪里查找模板; 变量输出/转义:变量值输出; 代码片段:执行代码片段,完成如if/else、for等复杂逻辑,调用对象函数/方法; 注释:解释...

    lua-resty-core, 新的基于 lua Nginx 模块的API.zip

    lua-resty-core, 新的基于 lua Nginx 模块的API 电子邮件名称lua-resty-core - 用于ngx_http_lua_module和/或者ngx_stream_lua_module的基于new的Lua table-内容名称状态概要说明描述先决条件API实现了r

    lua-cjson-2.1.0

    1. **解析JSON字符串**:`lua-cjson`提供了`decode`函数,可以将JSON格式的字符串解析成Lua的数据结构,如table、number、string、boolean和nil。 2. **序列化Lua数据**:相反,`encode`函数可以将Lua的数据结构...

    lua-devel-5.3.4-12.el8.aarch64

    `lua-devel` 包的安装是为 Lua 应用程序或模块的开发和编译准备的。它包含了以下关键组成部分: 1. **头文件**:例如 `lua.h`、`luac.h` 等,这些头文件定义了 Lua API,供 C/C++ 程序调用 Lua 的函数和结构体,...

    lua-resty-limit-traffic, 在 openresty/ngx_lua中,用于限制和控制流量的Lua库.zip

    lua-resty-limit-traffic, 在 openresty/ngx_lua中,用于限制和控制流量的Lua库 电子邮件名称lua-resty-limit-traffic - 用于限制和控制 openresty/ngx_lua中流量的Lua库目录名称状态概要说明描述安装工具社区服务...

    lua-resty-redis-connector-master

    《lua-resty-redis-connector:Lua在OpenResty中的Redis连接器详解》 在现代Web服务开发中,Lua作为一种轻量级脚本语言,因其高效、简洁的特性被广泛应用于服务器端。OpenResty是基于Nginx的高性能Web平台,它集成...

    lua-resty-mongol-master已编译

    lua-resty-mongol是基于OpenResty的一个lua库,专为处理MongoDB连接和操作而设计。标题"lua-resty-mongol-master已编译"表明我们已经获取到lua-resty-mongol的最新稳定版本,并且完成了编译过程,准备在不同的操作...

    EmmyLua-AttachDebugger-1.0.0.4.zip

    "EmmyLua-AttachDebugger-1.0.0.4.zip"是这个工具的一个特定版本,版本号为1.0.0.4,意味着它可能包含了该版本的最新更新和修复。 在IntelliJ IDEA中,集成EmmyLua调试器使得程序员能够像调试Java代码一样调试Lua...

    lua-devel-5.1.4-4.1.el6.x86_64.rpm

    安装nginx_lua模块时候需要先安装nginx的依赖包,安装命令rpm -ivh lua-devel-5.1.4-4.1.el6.x86_64.rpm

    lua-nginx-module.zip

    1. 非阻塞I/O:Lua-nginx-module充分利用了Nginx的非阻塞I/O模型,使得Lua脚本能够快速响应网络事件,提高了服务器的并发处理能力。 2. 动态性:通过Lua,开发者可以编写复杂的业务逻辑,如动态路由、会话管理、...

    云风-lua源码欣赏-lua-5.21

    《云风-lua源码欣赏-lua-5.21》是一本专注于解析Lua 5.2.1版本源码的书籍。作者采用非线性写作方式,将各个章节独立完成,最后进行整体整合。书中的内容涵盖了Lua的多个核心方面,包括源文件划分、代码风格、虚拟机...

    emmylua-pr-0.3.103.vsix

    在本文中,我们将深入探讨这个名为"emmylua-pr-0.3.103.vsix"的压缩包文件,以及它与EmmyLua、VSCode和Lua编程之间的关联。 首先,让我们来理解一下文件名"emmylua-pr-0.3.103.vsix"。"emmylua"是插件的名字,"pr...

    lua-resty-mongol_openresty连接mongoldb的lua库

    “lua-resty-mongol”是专为OpenResty设计的一个lua库,用于在OpenResty环境中与MongoDB数据库进行交互。这个库的创建是为了在高性能的Web服务中无缝集成MongoDB的数据操作功能,它允许开发者使用lua脚本直接处理...

    lua-nginx-module-0.10.20.tar.gz

    《Lua在Nginx中的应用:lua-nginx-module-0.10.20详解》 Lua语言以其轻量级、高效和强大的脚本能力,近年来在Web开发领域备受青睐,尤其是在Nginx服务器中,Lua与Nginx的结合使用,通过lua-nginx-module模块,实现...

    lua-resty-validation, 用于Lua和OpenResty的验证库( 输入验证和筛选).zip

    lua-resty-validation, 用于Lua和OpenResty的验证库( 输入验证和筛选) lua-resty-validationlua-resty-validation 是用于Lua和OpenResty的可以扩展链接验证和过滤库。带lua-resty-validation的 Hello Worldlocal val

    lua-cjson-2.1.0-已编译

    Lua-cjson是一个为Lua语言设计的JSON(JavaScript Object Notation)编码和解码库,它在Lua环境中提供了高效且易用的JSON接口。JSON是一种轻量级的数据交换格式,广泛应用于网络服务之间的数据通信以及存储数据。Lua...

Global site tag (gtag.js) - Google Analytics