[toc]
## 安裝
```
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test
make install
```
****
報錯:`lua.c:82:31: fatal error: readline/readline.h: No such file or directory`
方案:
`yum install readline-devel`
## 語法
1. 啟動lua交互命令窗口`lua`或者`lua -i`
2. 在文件開頭加入`#!/usr/local/bin/lua`可以指定按照lua腳本來運行
3. 單行注釋`--`
4. 多行注釋
```
--[=[注釋內容]=]
```
5. 僅當一個變量不等于nil時,這個變量即存在(刪除變量,將其賦值為nil)
## 數據類型
1. nil:只有nil屬于這個類型,表示一個無效值
nil做比較時需要加引號
2. boolean:true/false
3. number:雙精度的實浮點數
4. string:[[]]也可表示字符串
字符串連接使用`..`
計算字符串長度用#
5. function:c或者lua編寫的函數
6. userdata:表示任意存儲在變量中的C數據結構
7. thread:執行的獨立線路,用于執行協同程序
最主要的線程是協同程序(coroutine)。它跟線程(thread)差不多,擁有自己獨立的棧、局部變量和指令指針,可以跟其他協同程序共享全局變量和其他大部分東西.
線程可以同時多個運行,而協程任意時刻只能運行一個,并且處于運行狀態的協程只有被掛起(suspend)時才會暫停
8. table:關聯數組。數組的索引可以是數字、字符串或表類型。在 Lua 里,table 的創建是通過"構造表達式"來完成,最簡單構造表達式是{},用來創建一個空表
索引用1開始
## 變量
全局變量、局部變量(local)、表中的域
1. 遇到賦值語句Lua會先計算右邊所有的值然后再執行賦值操作,所以我們可以這樣進行交換變量的值(x,y = y,x)
## 循環
### while
~~~
while(condition)
do
statements
end
~~~
### for
#### 數值for循環
~~~
for var=exp1,exp2,exp3 do
<執行體>
end
~~~
var 從 exp1 變化到 exp2,每次變化以 exp3 為步長遞增 var,并執行一次執行體。exp3 是可選的,如果不指定,默認為1
#### 泛型for循環
~~~
--打印數組a的所有值
a = {"one", "two", "three"}
for i, v in ipairs(a) do
????print(i, v)
end
~~~
### repeat...until
~~~
repeat
statements
until( condition )
~~~
先執行后判斷,至少執行一次。類php的do while
## 函數
1. 加local表示局部函數
### 可變參數
1. `...`
2. 使用`local arg ={...}`
## 關系運算符
不等于`~=`
## 文件IO
```
-- 以只讀方式打開文件
file=io.open("test.lua","r")
-- 設置默認輸入文件為 test.lua
io.input(file)
-- 輸出文件第一行
print(io.read())
-- 關閉打開的文件
io.close(file)
-- 以附加的方式打開只寫文件
file=io.open("test.lua","a")
-- 設置默認輸出文件為 test.lua
io.output(file)
-- 在文件最后一行添加 Lua 注釋
io.write("-- ?test.lua 文件末尾注釋")
-- 關閉打開的文件
io.close(file)
```
- php
- 安全
- php7
- 特性
- 編譯安裝
- 源碼整體框架
- 基本變量
- thinkphp3.2.3
- thinkphp5.0
- thinkphp6.0
- laravel
- 配置
- 路由
- artisan控制臺
- eloquent
- tinker
- composer
- 加密解密
- 小知識點
- 數組
- string
- 代碼簡潔之道
- 編譯
- 語法糖
- lumen
- smarty
- 錯題集
- 算法及數據結構
- 線性表結構
- 插入排序
- 冒泡排序
- 數據庫
- mysql
- oracle
- PostgreSQL
- redis
- sqlserver
- 前端
- 備忘
- js
- nodejs
- vue
- css
- electron
- vue
- 語法糖
- colorui使用筆記
- 微信小程序
- 操作系統
- windows
- bat
- 快捷鍵
- linux
- sed
- 問題解決
- git
- docker
- docker-compose
- 正則表達式
- ps
- lua
- 協議相關
- 問題思索
- Golang
- 測試
- 讀取和寫入json配置文件
- 類
- 接口
- mod
- gin
- fyne
- 禪道二次開發
- 服務
- apache
- 漏洞配置
- http server優化
- nginx
- 安裝
- 面試題庫
- freeswitch