<aside class="aside clearfix">
                        <a class="tag label label-info" href="/tags/lua.html">lua</a>
                    </aside>
                    <section class="brief"><p>了解到<code>Lua</code>(一种轻量级、可嵌入式的脚本语言),其实是很早之前和一些做游戏的朋友聊天的时候知道的,他们在项目中广泛地使用到这个语言。于是自己上网也看了一些lua开发中的一些特定发现,Lua 被运用的领域远不止游戏。特别最近很火的Redis和<code>OpenResty</code>(一个基于Nginx 与Lua 的高性能Web 平台)其内部集成了大量精良的Lua 库、第三方模块以及大多数的依赖项,开发人员使用Lua编写脚本就能非常轻松开发出高性能的服务了。</p>

lua

若要了解一下lua在行业更深的应用,可以阅读云风的相关文章:点击这里

下面着重的还是Lua入门级别的学习总结

特性

Lua是一个动态弱类型语言,支持增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程(coroutine)支持。

  • 可以很方便的和用C/C++互相调用
  • 很简单,不涉及任何复杂的编程概念,对数据结构的描述能力强
  • 轻量级,库体积很小,只有几百K。
  • 学习很容易,开发效率高
  • 性能好, 支持协程,闭包等简化实现的手段

安装

lua的安装非常简单,直接参考下面的命令

Linux环境

curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxf lua-5.3.4.tar.gz
cd lua-5.3.4
make linux test
make install

Mac环境

curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxf lua-5.3.4.tar.gz
cd lua-5.3.4
make macosx test
make install

安装完成后,我们在终端里面敲入lua,接口进入lua的命令交互模式

$ lua

Lua 5.3.4 Copyright © 1994-2017 Lua.org, PUC-Rio
> print("go")
go

内置类型

既然是动态类型的脚本语言,这说明同一个变量可以在不同时刻指向不同类型的数据

lua的类型主要包含 字符串、函数、布尔、数字、空(nil)、表

1、lua内置函数 type 能够返回一个值或一个变量所属的类型:

testtype.lua

#!/usr/local/bin/lua
print(type("golang")) 
print(type(print))         
print(type(true))          
print(type(1.9))         
print(type(nil))          

执行输出

./testtype.lua

string
function
boolean
number
nil

2、字符串

字符串你可以用单引号,也可以用双引号,还支持C类型的转义,比如:

‘a’ (响铃), 
‘b’ (退格), 
‘f’ (表单), 
‘n’ (换行), 
‘r’ (回车), 
‘t’ (横向制表), 
‘v’ (纵向制表), 
‘\’ (反斜杠), 
‘”‘ (双引号), 
‘” (单引号)

下面的四种方式定义了完全相同的字符串(其中的两个中括号可以用于定义有换行的字符串)

#!/usr/local/bin/lua
a = 'gon1.9"'
print(a)  
a = "alon1.9""
print(a)  
a = [[go
1.9"]]    
print(a) 

使用前缀运算符’#’(也称为长度运算符)可以得到字符串的长度。

#!/usr/local/bin/lua
a = "golang"
print(#a)            
print(#"123