# table library
table庫是由一些輔助函數構成的,這些函數將table作為數組來操作。
#### table.concat (table [, sep [, i [, j ] ] ])
對于元素是string或者number類型的表table,返回table[i]..sep..table[i+1] ··· sep..table[j]連接成的字符串。填充字符串sep默認為空白字符串。起始索引位置i默認為1,結束索引位置j默認是table的長度。如果i大于j,返回一個空字符串。
> 示例代碼
~~~
a = {1, 3, 5, "hello" }
print(table.concat(a))
print(table.concat(a, "|"))
print(table.concat(a, " ", 4, 2))
print(table.concat(a, " ", 2, 4))
-->output
135hello
1|3|5|hello
3 5 hello
~~~
#### table.insert (table, [pos ,] value)
在表table的pos索引位置插入value,其它元素向后移動到空的地方。pos的默認值是表的長度加一,即默認是插在表的最后。
> 示例代碼
~~~
a = {1, 8} --a[1] = 1,a[2] = 8
table.insert(a, 1, 3) --在表索引為1處插入3
print(a[1], a[2], a[3])
table.insert(a, 10) --在表的最后插入10
print(a[1], a[2], a[3], a[4])
-->output
3 1 8
3 1 8 10
~~~
#### table.maxn (table)
返回表table的最大索引編號;如果此表沒有正的索引編號,返回0。
> 示例代碼
~~~
a = {}
a[-1] = 10
print(table.maxn(a))
a[5] = 10
print(table.maxn(a))
-->output
0
5
~~~
#### table.remove (table [, pos])
在表table中刪除索引為pos(pos只能是number型)的元素,并返回這個被刪除的元素,它后面所有元素的索引值都會減一。pos的默認值是表的長度,即默認是刪除表的最后一個元素。
> 示例代碼
~~~
a = { 1, 2, 3, 4}
print(table.remove(a, 1)) --刪除速索引為1的元素
print(a[1], a[2], a[3], a[4])
print(table.remove(a)) --刪除最后一個元素
print(a[1], a[2], a[3], a[4])
-->output
1
2 3 4 nil
4
2 3 nil nil
~~~
#### table.sort (table [, comp])
按照給定的比較函數comp給表table排序,也就是從table[1]到table[n],這里n表示table的長度。比較函數有兩個參數,如果希望第一個參數排在第二個的前面,就應該返回true,否則返回false。如果比較函數comp沒有給出,默認從小到大排序。
> 示例代碼
~~~
function compare(x, y) --從大到小排序
return x > y --如果第一個參數大于第二個就返回true,否則返回false
end
a = { 1, 7, 3, 4, 25}
table.sort(a) --默認從小到大排序
print(a[1], a[2], a[3], a[4], a[5])
table.sort(a, compare) --使用比較函數進行排序
print(a[1], a[2], a[3], a[4], a[5])
-->output
1 3 4 7 25
25 7 4 3 1
~~~
- 序
- Lua簡介
- Lua環境搭建
- 基礎數據類型
- 表達式
- 控制結構
- if/else
- while
- repeat
- 控制結構for的使用
- break,return
- Lua函數
- 函數的定義
- 函數的參數
- 函數的返回值
- 函數回調
- 模塊
- String庫
- Table庫
- 日期時間函數
- 數學庫函數
- 文件操作
- 元表
- 面向對象編程
- FFI
- LuaRestyRedisLibrary
- select+set_keepalive組合操作引起的數據讀寫錯誤
- redis接口的二次封裝(簡化建連、拆連等細節)
- redis接口的二次封裝(發布訂閱)
- pipeline壓縮請求數量
- script壓縮復雜請求
- LuaCjsonLibrary
- json解析的異常捕獲
- 稀疏數組
- 空table編碼為array還是object
- 跨平臺的庫選擇
- PostgresNginxModule
- 調用方式簡介
- 不支持事務
- 超時
- 健康監測
- SQL注入
- LuaNginxModule
- 執行階段概念
- 正確的記錄日志
- 熱裝載代碼
- 阻塞操作
- 緩存
- sleep
- 定時任務
- 禁止某些終端訪問
- 請求返回后繼續執行
- 調試
- 調用其他C函數動態庫
- 我的lua代碼需要調優么
- 變量的共享范圍
- 動態限速
- shared.dict 非隊列性質
- 如何添加自己的lua api
- 正確使用長鏈接
- 如何引用第三方resty庫
- 使用動態DNS來完成HTTP請求
- 緩存失效風暴
- Lua
- 下標從1開始
- 局部變量
- 判斷數組大小
- 非空判斷
- 正則表達式
- 不用標準庫
- 虛變量
- 函數在調用代碼前定義
- 抵制使用module()函數來定義Lua模塊
- 點號與冒號操作符的區別
- 測試
- 單元測試
- API測試
- 性能測試
- 持續集成
- 灰度發布
- web服務
- API的設計
- 數據合法性檢測
- 協議無痛升級
- 代碼規范
- 連接池
- c10k編程
- TIME_WAIT問題
- 與Docker使用的網絡瓶頸
- 火焰圖
- 什么時候使用
- 顯示的是什么
- 如何安裝火焰圖生成工具
- 如何定位問題