亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua中的table學習筆記

2024-07-21 23:04:21
字體:
來源:轉載
供稿:網友

table 在 Lua 里是一種重要的數據結構,它可以說是其他數據結構的基礎,通常的數組、記錄、線性表、隊列、集合等數據結構都可以用 table 來表示,甚至連全局變量(_G)、模塊、元表(metatable)等這些重要的 Lua 元素都是 table 的結構。可以說,table  是一個強大而又神奇的東西。

table 特性

在之前介紹 Lua 數據類型時,也說過了 table 的一些特性,簡單列舉如下(詳情可查看之前的介紹):

1.table是一個“關聯數組”,數組的索引可以是數字或者是字符串
2.table 的默認初始索引一般以 1 開始
3.table 的變量只是一個地址引用,對 table 的操作不會產生數據影響
4.table 不會固定長度大小,有新數據插入時長度會自動增長
5.table 的方法函數

Lua 5.2.2 內置有以下 7 中對 table 操作的方法:

concat

函數 table.concat 主要用來把表里的每個元素通過一個分隔符(separator)連接組合起來,用法:

 

復制代碼 代碼如下:

table.concat(table, sep,  start, end)

 

上面除 table 外, sep、start、end 這三個參數都是可選的,并且順序讀入的,如果沒指定傳入,函數 concat 會采用默認值(分隔符 sep 的默認值是空字符, start 的默認值是 1, end 的默認值是數組部分的總長)去執行。

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
 
print(table.concat(tbl))
 
print(table.concat(tbl, "、"))
 
print(table.concat(tbl, "、", 2))
 
print(table.concat(tbl, "、", 2, 3))

 

對于密集型的字符并接,table.concat 比用 ".." 連接更高效,下面是用 time 測試的效果:

 

復制代碼 代碼如下:

local str = {}
for i = 1, 10000 do
    str[i] = "str"
end
print(table.concat(str))
--real  0m0.005s
--user  0m0.003s
--sys   0m0.002s

 

 

復制代碼 代碼如下:

local str = ""
for i = 1, 10000 do
    str = str .. "str"
end
print(str)
--real  0m0.041s
--user  0m0.037s
--sys   0m0.002s

 

insert

函數 table.insert 用于向 table 的指定位置(pos)插入一個新元素,用法:

 

復制代碼 代碼如下:

table.insert(table, pos value)

 

參數 pos 是可選,默認是 table 末尾位置。

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
 
table.insert(tbl, "watermelon")
print(table.concat(tbl, "、"))
 
table.insert(tbl, 2, "watermelon")
print(table.concat(tbl, "、"))

 

maxn

函數 table.maxn 是返回 table 最大的正數索引值,用法:

 

復制代碼 代碼如下:

table.maxn (table)

 

如果不存在正數的索引值,則返回 0。

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
print(table.maxn(tbl))
 
local tbl = {"apple", "pear", "orange", "grape", [26] = "watermelon"}
print(table.maxn(tbl))
 
local tbl = {[-1] = "apple", [-2] = "pear", [-3] = "orange", [-4] = "grape"}
print(table.maxn(tbl))

 

pack

函數 table.pack 是獲取一個索引從 1 開始的參數表 table,并會對這個 table 預定義一個字段 n,表示該表的長度,用法:

 

復制代碼 代碼如下:

table.pack(···)

 

該函數常用在獲取傳入函數的參數。

 

復制代碼 代碼如下:

function table_pack(param, ...)
    local arg = table.pack(...)
    print("this arg table length is", arg.n)
    for i = 1, arg.n do
        print(i, arg[i])
    end
end
 
table_pack("test", "param1", "param2", "param3")

 

remove

函數 table.remove 用于刪除 table 里某個值,用法:

 

復制代碼 代碼如下:

table.remove (list [, pos])

參數 pos 可選,默認為刪除 table 最后一個元素,并且參數 pos 的類型只能是數字 number 類型。

 

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
table.remove(tbl, 2)
print(table.concat(tbl, "、"))
 
table.remove(tbl)
print(table.concat(tbl, "、"))

 

sort

函數 table.sort 用于對 table 里的元素作排序操作,用法:

 

復制代碼 代碼如下:

table.sort(table, comp)

 

參數 comp 是一個排序對比函數,它有兩個參數 param1、param2,如果 param1 排在 param2 前面,那么排序函數返回 true,否則返回 false。

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
local sort_func1 = function(a, b) return a > b end
table.sort(tbl, sort_func1)
print(table.concat(tbl, "、"))
 
local sort_func2 = function(a, b) return a < b end
table.sort(tbl, sort_func2)
print(table.concat(tbl, "、"))

 

參數 comp 可選,缺省 comp 的情況下是對表作升序排序。

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
table.sort(tbl)
print(table.concat(tbl, "、"))

 

unpack

函數 table.unpack 用于返回 table 里的元素,用法:

 

復制代碼 代碼如下:

table.unpack(table, start, end)

 

參數 start 是開始返回的元素位置,默認是 1,參數 end 是返回最后一個元素的位置,默認是 table 最后一個元素的位置,參數 start、end 都是可選

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
print(table.unpack(tbl))
 
local a, b, c, d = table.unpack(tbl)
print(a, b, c, d)
 
print(table.unpack(tbl, 2))
print(table.unpack(tbl, 2, 3))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠色狠狠色综合日日五| 另类视频在线观看| 日本久久久久久久久久久| 亚洲精品中文字幕有码专区| 97国产精品久久| 欧美xxxx18性欧美| 欧美日本亚洲视频| 久热在线中文字幕色999舞| 91丝袜美腿美女视频网站| 亚洲aⅴ男人的天堂在线观看| 欧美在线一区二区视频| 亚洲欧美另类在线观看| 日韩电影中文字幕一区| 国产97在线播放| www.亚洲一二| 综合136福利视频在线| 国产精品久久久久久久久久99| 精品国产一区二区三区在线观看| 欧美日韩国内自拍| 亚洲精品国产精品国产自| 久久久久久久久亚洲| 91麻豆国产语对白在线观看| 亚洲精品电影在线| 精品一区二区三区四区在线| 亚洲精品av在线播放| 久久久久久久久久婷婷| 日韩美女av在线免费观看| 青青精品视频播放| 欧美性黄网官网| 色天天综合狠狠色| 欧美人与物videos| 欧美激情一区二区三区在线视频观看| 国产va免费精品高清在线观看| 国产一区二区三区在线播放免费观看| 亚洲免费成人av电影| 国产拍精品一二三| 亚洲欧美成人在线| 欧美视频不卡中文| 国产精品日韩精品| 青青青国产精品一区二区| 色偷偷亚洲男人天堂| 成人有码在线播放| 午夜免费久久久久| 2018日韩中文字幕| 亚洲欧美日韩在线高清直播| 国产精品综合不卡av| 亚洲人成在线观看| 国产精品视频播放| 亚洲男人天堂手机在线| 中文字幕v亚洲ⅴv天堂| 久久久精品在线观看| 亚洲最新在线视频| 久久久99久久精品女同性| 日韩精品视频三区| 久久6免费高清热精品| 一本大道亚洲视频| 久久久91精品国产| 国产精品一区二区久久久| 欧美激情网友自拍| 亚洲国产精品免费| 欧美日韩一二三四五区| 91久久夜色精品国产网站| 日韩成人在线视频网站| 国产欧美日韩综合精品| 国产精品久在线观看| 色小说视频一区| 国产精品毛片a∨一区二区三区|国| 欧美亚洲另类制服自拍| 亚洲一区二区在线播放| 国产美女久久精品| 91免费人成网站在线观看18| 精品国产精品三级精品av网址| 欧美大片网站在线观看| 欧美巨乳美女视频| 国产精品v片在线观看不卡| 中文字幕欧美精品在线| 青青草99啪国产免费| 尤物tv国产一区| 日韩精品福利网站| 亚洲影院色在线观看免费| 日韩精品视频观看| 91精品国产99久久久久久| 黄色一区二区三区| 热久久免费国产视频| 91地址最新发布| 久久精品国产欧美激情| 日韩av影视综合网| 成人h片在线播放免费网站| 中文字幕久久久av一区| 国产亚洲欧洲高清一区| 精品视频偷偷看在线观看| 国产主播欧美精品| 欧美性猛交视频| 中文.日本.精品| 欧美中文字幕在线观看| 色香阁99久久精品久久久| xx视频.9999.com| 九色精品免费永久在线| 亚洲欧美日韩国产精品| 亚洲黄色成人网| 国产精品成人免费电影| 亚洲自拍小视频| 欧美性生交xxxxx久久久| 热久久这里只有精品| 欧美色图在线视频| 日韩成人网免费视频| 亚洲精品少妇网址| 国语自产精品视频在线看抢先版图片| 国产精品电影网| 尤物九九久久国产精品的特点| 亚洲性夜色噜噜噜7777| 欧美精品久久久久久久久久| 亚洲一二三在线| 久久久久久久久国产精品| 欧美激情久久久| 欧美黄网免费在线观看| 亚洲毛片在线观看.| 国产一区二区在线免费视频| 69久久夜色精品国产69乱青草| 久热精品视频在线| 欧美激情欧美激情| 亚洲欧美日本伦理| 久久99精品视频一区97| 国产精品免费久久久| 亚洲欧洲免费视频| 欧美成人免费小视频| 国产a∨精品一区二区三区不卡| 麻豆国产精品va在线观看不卡| 国产一区二区动漫| 国自在线精品视频| 国产精品日韩在线一区| 日韩av电影在线免费播放| 亚洲91av视频| 国产精品久久国产精品99gif| 一本色道久久88精品综合| 成人乱人伦精品视频在线观看| 国产精品私拍pans大尺度在线| 国产一区二区三区视频在线观看| 久久久亚洲福利精品午夜| 欧美激情a∨在线视频播放| 姬川优奈aav一区二区| 精品欧美一区二区三区| 国产综合在线看| 国产成人精品一区| 亚洲精品98久久久久久中文字幕| 亚洲精品电影在线观看| 欧美日韩中国免费专区在线看| 在线观看欧美成人| 日韩欧美aaa| 久久视频精品在线| 不卡av在线播放| 亚洲成av人影院在线观看| 中文字幕日韩av综合精品| 影音先锋日韩有码| 欧美成人精品不卡视频在线观看| 亚洲精品电影网站| 亚洲精品少妇网址| 国产精品一区二区电影| 黑人与娇小精品av专区| 中文字幕欧美日韩在线| 亚洲美女在线视频| 亚洲bt欧美bt日本bt| 国产精品女主播视频| 啪一啪鲁一鲁2019在线视频|