欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lua中的table淺析

 更新時(shí)間:2014年09月23日 09:26:48   作者:iCode0410  
這篇文章主要介紹了Lua中的table淺析,本文講解了table的構(gòu)造方法、內(nèi)置函數(shù)unpack等內(nèi)容,需要的朋友可以參考下

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

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

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

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

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

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

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

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

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

上面提到構(gòu)造表達(dá)式{},介紹一下復(fù)雜一點(diǎn)的構(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的項(xiàng)會(huì)自動(dòng)生成整數(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

相關(guān)文章

  • Lua教程(二十一):編寫C函數(shù)的技巧

    Lua教程(二十一):編寫C函數(shù)的技巧

    這篇文章主要介紹了Lua教程(二十一):編寫C函數(shù)的技巧,本文講解了數(shù)組操作、字符串操作、在C函數(shù)中保存狀態(tài)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua教程(六):綁定一個(gè)簡(jiǎn)單的C++類

    Lua教程(六):綁定一個(gè)簡(jiǎn)單的C++類

    這篇文章主要介紹了Lua教程(六):綁定一個(gè)簡(jiǎn)單的C++類,本文是最后一篇C/C++與Lua交互的教程,其他教程請(qǐng)參閱本文下方的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • Lua判斷字符串中包含中文字符的方法和計(jì)算字符串寬度函數(shù)分享

    Lua判斷字符串中包含中文字符的方法和計(jì)算字符串寬度函數(shù)分享

    這篇文章主要介紹了Lua判斷字符串中包含中文字符的方法和計(jì)算字符串寬度函數(shù)分享,需要的朋友可以參考下
    2015-04-04
  • Lua判斷數(shù)據(jù)類型的方法

    Lua判斷數(shù)據(jù)類型的方法

    這篇文章主要介紹了Lua判斷數(shù)據(jù)類型的方法,本文講解了判斷數(shù)據(jù)類型的方法和Lua腳本語言的8種基本數(shù)據(jù)類型,需要的朋友可以參考下
    2015-04-04
  • Lua檢測(cè)數(shù)組(tabble)中是否包含某個(gè)值

    Lua檢測(cè)數(shù)組(tabble)中是否包含某個(gè)值

    這篇文章主要介紹了Lua檢測(cè)數(shù)組(tabble)中是否包含某個(gè)值以及l(fā)ua 判斷一個(gè)字符是否存在某個(gè)數(shù)組兩個(gè)方法,需要的朋友可以參考下
    2015-05-05
  • Lua中的table學(xué)習(xí)筆記

    Lua中的table學(xué)習(xí)筆記

    這篇文章主要介紹了Lua中的table學(xué)習(xí)筆記,本文講解了table.concat、table.insert、table.maxn、table.pack、 table.remove、table.sort等方法的使用,需要的朋友可以參考下
    2014-12-12
  • Lua中的元表與元方法學(xué)習(xí)總結(jié)

    Lua中的元表與元方法學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Lua中的元表與元方法學(xué)習(xí)總結(jié),本文講解了算術(shù)類的元方法、__tostring元方法等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua教程(十三):弱引用table

    Lua教程(十三):弱引用table

    這篇文章主要介紹了Lua教程(十三):弱引用table,一個(gè)table的弱引用類型是通過其元表的__mode字段來決定的,如果該值為包含字符"k",那么table就是key弱引用,如果包含"v",則是value弱引用,如果兩個(gè)字符均存在,就是key/value弱引用,需要的朋友可以參考下
    2015-04-04
  • Lua中使用.和:調(diào)用函數(shù)的區(qū)別

    Lua中使用.和:調(diào)用函數(shù)的區(qū)別

    這篇文章主要介紹了Lua中使用.和:調(diào)用函數(shù)的區(qū)別,本文總結(jié)了它的調(diào)用函數(shù)的時(shí)傳入?yún)?shù)的區(qū)別,并給出了一個(gè)代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua中函數(shù)的幾個(gè)特別之處探究

    Lua中函數(shù)的幾個(gè)特別之處探究

    這篇文章主要介紹了Lua中函數(shù)的幾個(gè)特別之處探究,本文講解了Lua的函數(shù)創(chuàng)建、函數(shù)的參數(shù)、函數(shù)參數(shù)個(gè)數(shù)自適應(yīng)、函數(shù)多重返回值等內(nèi)容,需要的朋友可以參考下
    2014-09-09

最新評(píng)論