最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中的table淺析

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

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

相關(guān)文章

  • Lua中關(guān)于求模與求余的區(qū)別介紹

    Lua中關(guān)于求模與求余的區(qū)別介紹

    這篇文章主要介紹了Lua中關(guān)于求模與求余的區(qū)別介紹,我覺得很多人搞不清楚這兩個概念的區(qū)別,剛好在翻譯lua手冊時遇到%與math.fmod這兩個操作,順便做一下說明吧,需要的朋友可以參考下
    2015-04-04
  • lua讀取redis數(shù)據(jù)的null判斷示例代碼

    lua讀取redis數(shù)據(jù)的null判斷示例代碼

    最近在工作中遇到了一個問題,通過查找相關(guān)資料才得知原因是因為返回結(jié)果的問題,下面這篇文章主要給大家介紹了關(guān)于lua讀取redis數(shù)據(jù)的null判斷的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • 深入探究Lua中的解析表達(dá)式

    深入探究Lua中的解析表達(dá)式

    這篇文章主要介紹了深入探究Lua中的解析表達(dá)式,對于其語法部分的說明和示例都超詳細(xì),極力推薦此文!需要的朋友可以參考下
    2015-07-07
  • Lua中os庫詳細(xì)介紹

    Lua中os庫詳細(xì)介紹

    這篇文章主要介紹了Lua中os庫詳細(xì)介紹,本文詳細(xì)講解了OS庫中的常用方法,分別對參數(shù)做出了解釋,有的給出了示例,需要的朋友可以參考下
    2014-11-11
  • Lua獲取系統(tǒng)時間和時間格式化方法及格式化參數(shù)

    Lua獲取系統(tǒng)時間和時間格式化方法及格式化參數(shù)

    這篇文章主要介紹了Lua獲取系統(tǒng)時間和時間格式化方法及格式化參數(shù),需要的朋友可以參考下
    2015-04-04
  • Lua數(shù)據(jù)類型介紹

    Lua數(shù)據(jù)類型介紹

    這篇文章主要介紹了Lua數(shù)據(jù)類型介紹,本文講解了Lua中的nil(空)、boolean(布爾)、number(數(shù)字)、string(字符串)、table(表)、function(函數(shù))、thread(線程)、userdata(自定義類型)等數(shù)據(jù)類型,需要的朋友可以參考下
    2014-12-12
  • Lua編程示例(二):面向?qū)ο?、metatable對表進(jìn)行擴(kuò)展

    Lua編程示例(二):面向?qū)ο蟆etatable對表進(jìn)行擴(kuò)展

    這篇文章主要介紹了Lua編程示例(二):面向?qū)ο?、metatable對表進(jìn)行擴(kuò)展,本文直接給出實例代碼,需要的朋友可以參考下
    2015-07-07
  • Lua中的基本數(shù)據(jù)類型詳細(xì)介紹

    Lua中的基本數(shù)據(jù)類型詳細(xì)介紹

    這篇文章主要介紹了Lua中的基本數(shù)據(jù)類型詳細(xì)介紹,本文詳細(xì)的講解了Lua中的8種基本數(shù)據(jù)類型,需要的朋友可以參考下
    2014-09-09
  • Lua教程(五):迭代器和泛型for

    Lua教程(五):迭代器和泛型for

    這篇文章主要介紹了Lua教程(五):迭代器和泛型for,本文講解了迭代器與Closure、泛型for的語義、 無狀態(tài)迭代器的例子、 具有復(fù)雜狀態(tài)的迭代器等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua協(xié)同程序函數(shù)coroutine使用實例

    Lua協(xié)同程序函數(shù)coroutine使用實例

    這篇文章主要介紹了Lua協(xié)同程序函數(shù)coroutine使用實例,協(xié)程是協(xié)同程序的簡稱,顧名思義,就是協(xié)同工作的程序,需要的朋友可以參考下
    2014-09-09

最新評論

尚义县| 钟山县| 普兰县| 南宫市| 阿荣旗| 浦城县| 甘泉县| 年辖:市辖区| 西宁市| 敦煌市| 绥江县| 晋宁县| 简阳市| 利川市| 建昌县| 吴桥县| 松江区| 宁波市| 正镶白旗| 武冈市| 雷州市| 高密市| 玉环县| 阳原县| 剑川县| 鸡东县| 施秉县| 勃利县| 昆明市| 长宁区| 若尔盖县| 高州市| 海兴县| 沈丘县| 广宗县| 鹿邑县| 两当县| 会昌县| 新河县| 大田县| 炉霍县|