• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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"

    您可能感兴趣的文章:
    • Lua判断变量是否为数字、字符串是否可以转换为数字等
    • Lua中的全局变量、非全局变量总结
    • Lua中全局变量与非全局环境介绍
    • Lua变量类型简明总结
    • Lua中创建全局变量的小技巧(禁止未预期的全局变量)
    • Lua极简入门指南:全局变量
    • Lua中的基本语法、控制语句总结
    • 详解Lua中的while循环语句的使用
    • Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
    • Lua中for循环语句的使用教程
    • Lua中的变量类型与语句学习总结
    上一篇:Lua和C++语言的交互详解
    下一篇:Lua中的运算符简明总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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