Lua简介、编译安装教程及变量等语法介绍_Lua

公司业务有用到Lua,与nginx结合起来实现高性能的web应用,想去弄懂这方面的知识,就去了解学习了下Lua,欢迎大咔们指教。

1. Lua介绍

Lua是一门简单的编程语言,它的优势在于可以整合C++的模块来扩展自身的功能,使用数百行或更少的代码来解决复杂的问题。具有的特征有:

1.1. 可扩展性:Lua从一开始就被设计成易于扩展的语言,很多功能都是通过外部库来实现的,很容易与其他编程语言如C、C++、Java等等进行交互。
1.2. 简洁: Lua十分简洁,但是功能强大,易于学习,很适合小规模的应用。
1.3. 高效: Lua有很高的执行效率。
1.4. 可移植性: Lua可以运行在任何现有的系统上。

Lua脚本是包含一系列Lua命令的简单脚本,扩展名为.lua的文本文件。单个命令或者一系列命令组成的脚本文件,在Lua中我们把它称为代码块。

代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。

2. Lua安装

先把Lua环境搭建起来,便于后面学习演示。

复制代码 代码如下:

# curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz
# tar zxvf lua-5.2.3.tar.gz
# cd lua-5.2.3/src
# make linux

2.2 常见问题解决方法

问题1:

复制代码 代码如下:

lua.c:67:31: error: readline/readline.h: No such file or directory
lua.c:68:30: error: readline/history.h: No such file or directory

解决方法:

复制代码 代码如下:

# yum install readline-devel

问题2:

复制代码 代码如下:

make all SYSCFLAGS=”-DLUA_USE_LINUX” SYSLIBS=”-Wl,-E -ldl -lreadline”
make[1]: Entering directory `/root/lua-5.2.3/src'
gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `PC'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetflag'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetent'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `UP'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tputs'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgoto'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetnum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `BC'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetstr'

解决方法:

由于没有链接 ncurses库,需要加上 -lncurses即可。

复制代码 代码如下:

# vim ./src/Makefile
linux:
 $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"

3. Lua变量

在Lua中,变量不需要声明就可以使用的,因此可以在任何地方引入需要的变量。对变量的追踪就变难了。这就需要我们在使用当中,要格外的小心,以免不同函数中用了相同名字的变量而造成数据的混乱。

同时,也不需要指定变量的类型,如nul、boolean、string、number、table。变量的类型取决于给它赋的值。访问一个没有初始化的变量也不会出错,只不过得到的结果是空值nil。可以使用type函数来判断变量的类型。如:

复制代码 代码如下:

# ./lua
> value = 'www.jb51.net'
> print (type(value))
string
> value = 39514058
> -- jb51.net 运维生存时间Q群
> print (type(value))
number

3.1 全局变量

Lua变量默认是全局的,在整个会话中将保持不变,除非改变了它。在使用全局变量时,在变量前加个g字母会更加明确。不过,尽量使用局部变量。

3.2 局部变量

使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。定义局部变量可以为它设置一个初始值,也可以不用。如

复制代码 代码如下:

> local value1
> local vlaue2 = ‘www.jb51.net'

4. Lua注释语法

单行注释:–
多行注释:–[[ --]]

5. Lua命令行方式

复制代码 代码如下:

usage: ./lua [options] [script [args]]
Available options are:
  -e stat  execute string 'stat'  //直接将命令传入Lua
  -i       enter interactive mode after executing 'script'  //进入交互模式
  -l name  require library 'name'  //加载一个文件
  -v       show version information  //打印版本信息
  -E       ignore environment variables //忽略环境变量
  --       stop handling options
  -        stop handling options and execute stdin
# ./lua -e "print(type('www.jb51.net'))"
string

全局变量arg存放Lua的命令行参数。

在运行以前,Lua使用所有参数构造arg表。脚本名索引为0,脚本的参数从1开始增加。脚本前面的参数从-1开始减少。

复制代码 代码如下:

> lua -e "sin=math.sin" script a b
arg表如下:
arg[-3] = "lua"
arg[-2] = "-e"
arg[-1] = "sin=math.sin"
arg[0] = "script"
arg[1] = "a"
arg[2] = "b"

时间: 2024-11-08 21:35:05

Lua简介、编译安装教程及变量等语法介绍_Lua的相关文章

lnmp编译安装教程(非常详解)

linux采用的是centos,软件包统一放在/usr/local/src目录下.由于 centos源比较老,而且更新起来也比较慢,此处建议你换成163源.提示:如果你真打算采用这种编译安装php的话,请至少安排半天时间来完成.如果是在虚拟机里测试的话,建议调大内存以让时间更短,我本机给了虚拟机2G内存.在安装完成后可以再设置小点内存跑.安装的时候请按顺序安装. 更改yum源 #更换到163源 cd /etc/yum.repos.d/ wget http://mirrors.163.com/.h

CentOS系统MongoDB 编译安装教程详解

CentOS5编译安装mongodb mongodb有已经编译好的二进制包,解压到对应目录就可以使用. 下面介绍一下,怎么从源码进行编辑安装. 安装前: 安装scons wget http://prdownloads.sourceforge.net/scons/scons-2.3.4.tar.gz python setup.py install 下载mongodb源码&安装: wget https://github.com/mongodb/mongo/archive/r2.2.7-rc0.tar

linux下php扩展pdo_mysql编译安装教程

linux下的php扩展与windows下的扩展安装有些不同.下面就拿在linux下扩展php的pdo,pdo_mysql模块来说明一下 1.在php的原码安装包里,进入到etc/pdo_mysql里.假设你的php是安装在/usr/local/php里的.执行/usr/local/php/bin/phpize 2. 进行编译../configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/loc

libmeegotouch编译安装教程

1.qt sdk安装     Meego touch安装需要qt的版本为4.7或者以上,如果你没有安装qt或者你的版本过低的话,那可以前往以下链接进行下载,  http://qt.nokia.com/developer/qt-qtcreator-prerelease,下载Pre-Releases版本,完成后解压,切换到代码目录.     依次执行: ./configure -dbusmakemake install   ps:configure之所以加-dbus主要是编译Meego touch的

Lua教程(二):语法约定_Lua

Lua 中用到的 名字(也称作 标识符)可以是任何非数字开头的字母.数字.下划线组成的字符串. 这符合几乎所有编程语言中关于名字的定义. (字母的定义依赖于当前环境:系统环境中定义的字母表中的字母都可以被用于标识符.) 标识符用来命名变量,或作为表的域名. 下面的关键字是保留的,不能用作名字: 复制代码 代码如下: and       break     do        else      elseif end       false     for       function  if i

编译安装php5.2 with php-fpm方法介绍

php源码http://php.net/releases/index.php php-fpm补丁http://php-fpm.org 版本不要弄错了,下载完成后打上补丁  代码如下 复制代码 ./configure –prefix=/usr/local/php -with-config-file-path=/usr/local/php/etc -with-mysql=/usr/bin/mysql -with-mysqli=/usr/bin/mysql_config -with-openssl -

Lua字符串库中的几个重点函数介绍_Lua

在<Lua中的一些库>中也说到了,要对string库的模式匹配进行单独的讲解.对于字符串的处理,对于任何语言的学习来说,都是一个难点,而且也是一个必会的知识点.给你一个字符串,让你按照某种需求进行处理,你不会,那是多么尴尬的一件事情.所以,看完<Lua中的一些库>和这篇文章之后,我争取做到让你在处理字符串时,不再感到捉襟见肘,不再尴尬. 说到Lua中的模式匹配,基本上就是围绕着以下几个函数展开的: 1.find: 2.match: 3.gsub: 4.gmatch. 我的总结也就是

Lua之字符串格式化例子和常用格式化参数介绍_Lua

复制代码 代码如下: a = 'aadsdf\"'  print(string.format("%q",a))  %d 十进制整数 %o 八进制整数 %x 十六进制整数,大写的话为 %X %f 浮点型 格式 [-]nnnn.nnnn %e 科学表示法 格式 [-]n.nnnn e [+|-]nnn, 大写的话为 %E %g floating-point as %e if exp. < -4 or >= precision, else as %f ; upperca

ASP+中文教程(一)--asp+简介、安装、以及如何显示中文

asp+|教程|显示|中文 ASP+ 中文教程-----asp+简介.安装.以及如何显示中文 终于空下一段时间,可以学一些新东西,看了一下有关asp+的相关资料,觉得很值得学一下,所以就一边学习一边写下这个教程,对于自己来说,可以作为学习笔记,对于别人,尤其是那些E文不太好的朋友可以作为一个可看的中文资料吧,起个抛砖引玉的作用.由于水平所限,错误在所难免,希望大家能批评指正.首先我将讲一下什么是asp+ , 然后我会结合NGWS自带的例子具体讲一下asp+的应用.由于平常用C较多,所以所有例子都