
# Linux上Lua應用實戰與人工智能
本教程適用于至少了解并掌握一種類似C、C++、java 、OC等主流語言,具有基本腳本語言理解學習。 本教程主要包括 快速入門Lua語法,在Linux快速開發Lua腳本程序、Lua+Nginx、Lua+Redis等相關內容。
> ## 編著: 劉丹冰
> ## 公眾號: 劉丹冰Aceld
# 1 Lua介紹及環境
Lua 是一種輕量小巧的腳本語言,用標準C語言編寫并以源代碼形式開放, 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定制功能。
Lua 是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)里的一個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成并于1993年開發。
* 輕量級:它用標準C語言編寫并以源代碼形式開放,編譯后僅僅一百余K,可以很方便的嵌入別的程序里。
* 可擴展: Lua提供了非常易于使用的擴展接口和機制:由宿主語言\(通常是C或C++\)提供這些功能,Lua可以使用它們,就像是本來就內置的功能一樣。
* 其它特性:
* * 支持面向過程\(procedure-oriented\)編程和函數式編程\(functional programming\);
* 自動內存管理;只提供了一種通用類型的表(table),用它可以實現數組,哈希表,集合,對象;
* 語言內置模式匹配;閉包\(closure\);函數也可以看做一個值;提供多線程(協同進程,并非操作系統所支持的線程)支持;
* 通過閉包和table可以很方便地支持面向對象編程所需要的一些關鍵機制,比如數據抽象,虛函數,繼承和重載等。
* 游戲開發
* 獨立應用腳本
* web應用腳本
* 擴展和數據庫插件
* 安全系統:如入侵檢測系統\(IDS\)
## 1.1 官方網站
[http://www.lua.org/](http://www.lua.org/)
中文在線文檔 [http://www.runoob.com/manual/lua53doc/](http://www.runoob.com/manual/lua53doc/)
## 1.2 下載
[http://www.lua.org/download.html](http://www.lua.org/download.html)
找到 tar包進行下載。
或者使用以下指令安裝。
```bash
curl -R -O http://www.lua.org/ftp/lua-5.1.tar.gz
tar zxf lua-5.1.tar.gz
cd lua-5.1
make linux
sudo make install
```
如果報錯 找不到readline.h頭文件
```bash
lua.c:80:31: fatal error: readline/readline.h: No such file or directory
#include <readline/readline.h>
^
compilation terminated.
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory `/root/lua/lua-5.3.2/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/root/lua/lua-5.3.2/src'
make: *** [linux] Error 2
```
解決辦法:
```bash
缺少libreadline-dev依賴包
centos: yum install readline-devel
debian: apt-get install libreadline-dev
```
找不到-lncurses
apt-get install libncurses5-dev
## 1.3 運行第一個Lua程序
新建Hello\_lua.lua文件,寫代碼如下
```lua
print("Hello Lua!")
```
運行
```bash
lua Hello_lua.lua
```
輸出
```bash
Hello Lua!
```
- 1 Lua介紹及環境
- 2 基本語法
- 3 數據類型
- 4 Lua 變量
- 5 循環
- 6 流程控制
- 7 函數
- 8 運算符
- 9 字符串
- 10 數組
- 11 迭代器
- 12 table
- 13 Lua 模塊與包
- 14 Lua 元表(Metatable)
- 14.1 元表案例
- 15 Lua 協同程序(coroutine)
- 16 Lua 文件IO
- 17 Lua 面向對象
- 17.1 類
- 17.2 繼承
- 17.3 封裝
- 18 Lua 與 Mysql
- 19 Lua 與 redis
- 20 Lua 與 JSON
- 21 Lua 與 http
- 22 Lua 與 Nginx
- 22.1 Nginx_Lua的安裝及環境
- 22.2 ngx_lua API(全表)
- 22.3 常用命令介紹
- 22 Lua 人工智能
- (1) Torch的安裝
- (2)Tensor
- Lua與C混合編程