主頁 > 知識庫 > Lua中的table淺析

Lua中的table淺析

熱門標(biāo)簽:武漢百應(yīng)人工智能電銷機器人 揚州電銷外呼系統(tǒng)軟件 智能語音電銷的機器人 開通400電話申請流程 百度地圖標(biāo)注位置網(wǎng)站 400手機電話免費辦理 如何利用高德地圖標(biāo)注家 電腦外呼系統(tǒng)輻射大嗎 上海企業(yè)外呼系統(tǒng)排名

Lua的table提供了Map的功能,實現(xiàn)了"關(guān)聯(lián)數(shù)組",并且整數(shù)、字符串甚至nil都可以作為索引/key;table沒有固定的大小。
 
基于table,可以表示普通數(shù)組、符號表、集合、記錄、隊列和其他數(shù)據(jù)結(jié)構(gòu)。
 
而Lua也是通過table來解決模塊(module)、包(package)和對象(Object)的。
例如io.read表示使用"read"來索引table io。
 
在Lua中,table既不是值也不是"變量",而是對象,可以類比Java中的數(shù)組。
 
table是通過構(gòu)造表達(dá)式的,最簡單的就是{}

復(fù)制代碼 代碼如下:

> a={}
> a['name'] = 'wyj'
> =a.name
wyj
 
table永遠(yuǎn)是匿名的,一個持有table的變量與table自身沒有固定的關(guān)聯(lián)性:
復(fù)制代碼 代碼如下:

> b = a
> b.name = 'ljq'
> =a.name
ljq
> b = nil
> =a.name
ljq
 
b['name']和b.name等價,而對于數(shù)字只能使用b['3']的形式,同Javascript。
 
同其他對象一樣,當(dāng)沒有table的引用時,Lua的垃圾回收器最終回收table。
 
其實Lua將全局變量存儲在一個table中。
 
table的長度可以通過#獲?。?還可以獲取字符串的長度)
復(fù)制代碼 代碼如下:

> table = {}
> for i = 1,10 do
>> table[i] = i
>> end
> =#table
10

但不是所有情況都適用
復(fù)制代碼 代碼如下:

> table = {}
> table[3] = 3
> table.name = 'wyj'
> =#table
0
 
實際上,在第一次碰到nil時,就認(rèn)為是結(jié)束標(biāo)志
復(fù)制代碼 代碼如下:

> table = {}
> table[10] = 10
> =#table
0
> table[1] = 1
> =#table
1

這一點,不同于Javascript的數(shù)組長度的行為。

上面提到構(gòu)造表達(dá)式{},介紹一下復(fù)雜一點的構(gòu)造表達(dá)式:

復(fù)制代碼 代碼如下:

a = {'wyj', 'lmy'}
a= {x = 10, y = 20,l='s'}

但是下面的方式不正確
復(fù)制代碼 代碼如下:

> a={1=3}
stdin:1: '}'expected near '='
> a={'x'=3}
stdin:1: '}'expected near '='

而應(yīng)該這樣使用:
復(fù)制代碼 代碼如下:

> x = {[1] = 3,['name'] = 'www'}
> =x[1]
3
> =x.name
www

 
table還可以嵌套
復(fù)制代碼 代碼如下:

> a = {x = {y =1}}
> =a.x.y
1

更復(fù)雜的方式,可以調(diào)用函數(shù)初始化
> x ={math.sin(3)}
> =x[1]
0.14112000805987
 
另外需要特別注意的是,無label的項會自動生成整數(shù)的label
復(fù)制代碼 代碼如下:

> x = {1, 2, [2]=3, 4,5}
> =x[1]
1
> =x[2]
2
> =x[3]
4

所以,顯式的label為整數(shù)的情況下要特別小心。
 
另外支持用;替換,
復(fù)制代碼 代碼如下:

>x={x=1;y=2; 'one', 'two'}
> xx
1
> =x[1]
one

unpack

NoteGem Horizontal Line
內(nèi)置函數(shù)unpack可以提取key為1.2.3...的元素

復(fù)制代碼 代碼如下:

> t = {x=3,y=4,5,6,7}
> unpack(t)
> =unpack(t)
5        6        7
> a,b,c = unpack(t) --Lua支持多重賦值
> print(a,b,c)
5        6        7
 
> functionsum(a,b,c)
>> return a +b + c
>> end
> =sum(unpack(t))
18

您可能感興趣的文章:
  • Lua的table庫函數(shù)insert、remove、concat、sort詳細(xì)介紹
  • Lua中table的幾種構(gòu)造方式詳解
  • Lua中對table排序?qū)嵗?/li>
  • Lua中遍歷數(shù)組和table的4種方法
  • Lua中的table學(xué)習(xí)筆記
  • Lua中使用table.concat連接大量字符串實例
  • Lua判斷Table是否為空的方法(空的table即{})
  • Lua中使用table實現(xiàn)的其它5種數(shù)據(jù)結(jié)構(gòu)
  • 獲取Lua表結(jié)構(gòu)(table)數(shù)據(jù)實例
  • 深入談?wù)刲ua中神奇的table

標(biāo)簽:新余 宜賓 黑龍江 武漢 張掖 延邊 嘉峪關(guān) 江西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中的table淺析》,本文關(guān)鍵詞  Lua,中的,table,淺析,Lua,中的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中的table淺析》相關(guān)的同類信息!
  • 本頁收集關(guān)于Lua中的table淺析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章