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

首頁 > 開發 > 綜合 > 正文

Lua table類型學習筆記

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

關系表類型,這是一個很強大的類型。我們可以把這個類型看作是一個數組。只是 C語言的數組,只能用正整數來作索引; 在Lua中,你可以用任意類型的值來作數組的索引,但這個值不能是 nil。同樣,在C語言中,數組的內容只允許一種類型;在 Lua中,你也可以用任意類型的值來作數組的內容,nil也可以。

基本介紹

注意三點:
    第一,所有元素之間,總是用逗號 "," 隔開;
    第二,所有索引值都需要用 "["和"]" 括起來;如果是字符串,還可以去掉引號和中括號; 即如果沒有[]括起,則認為是字符串索引
    第三,如果不寫索引,則索引就會被認為是數字,并按順序自動從 1往后編;

例如:

復制代碼 代碼如下:

tt = {"hello" ,33}
value = 4
tab = {[tt] = "table",key = value, ["flag" ] = nil, 11}

 

print(tab[tt])
print(tab.key)
print(tab[1 ])


以上寫法都是對的。

 

look = {[www] = "ok"}這樣是不對的,www沒有賦值,所以默認為nil因此出錯table index is nil

復制代碼 代碼如下:

---
temp = 1
tab = {[temp] = 1, 11}

print(tab[temp]) --此時的結果是11,因為11沒有顯式對應的key,因此從1開始,如果前面定義了,則覆蓋其value
復制代碼 代碼如下:

---
temp = 2
tab = {[temp] = 1, 11}
temp = 1

print(tab[temp]) -- 結果是11,雖然定義時[temp] = 1,但是后來我們改變了temp的值,所以指向另外的key了

 


以上可知:

1.對于字符串,在{}定義時,可以key = value, 也可以["flag"] = nil,索引都是string類型,對于非nil類型變量(包括字符串),都可以[variable]=value的方式
2.使用table時,對于字符串,可以通過.的方式訪問,也可以通過[]方式訪問。tab[a],tab[b],只要a==b那么tab[a]可以訪問到tab[b]的值
3.不管定義索引時用的是常量還是變量,最終table中value的索引key是常量,不會隨變量的改變而變化該value的key

嵌套

復制代碼 代碼如下:

tb11= {tb12 = {bool = true}} -- simple, it's a table IN a table :)
-- Call magic!
print(tb11.tb12.bool ) -- works fine, since it's calling the key and value correctly.
print(tab11["tb12" ].bool ) --same as line 33
print(tab11.tb12 ["bool"]) --same as line 33
print(tab11["tb12" ]["bool"]) --same as line 33

修改table的value
復制代碼 代碼如下:

--Altering a table's content. Basically manipulating the values of the keys.
lucky= {john="chips" ,jane ="lemonade",jolene="egg salad" }

 

lucky.jolene = "fruit salad" --changed the value to "fruit salad" instead of "egg salad"
lucky.jerry = "fagaso food" -- adding a new key-value pair to the container lucky.
lucky.john = nil -- remove john from giving anything or from being a key.

 

table的易變性

復制代碼 代碼如下:

a = {}; b = a;
print(a == b)  --> true

 

c,d = {},{};

print(c == d) -->false

 

table庫函數使用
-----------------------------------------------------------
1. table.sort (table [, comp])
Sorts table elements in a given order, in-place, from table[1] to table[n], where n is the length of the table. If comp is given, then it must be a function that receives two table elements, and returns true when the first is less than the second (so that not comp(a[i+1],a[i]) will be true after the sort). If comp is not given, then the standard Lua operator < is used instead.
The sort algorithm is not stable; that is, elements considered equal by the given order may have their relative positions changed by the sort.

復制代碼 代碼如下:

name = {"you" ,"me", "him","bill" }
--table.sort - only works with arrays!
table.sort(name)
for k, v in ipairs( name) do
     print( k,v)
end
--table.sort uses callbacks. a function that is writtent to be called by a library function.
function cmp( a, b)
     if string.sub(a,2 ,2) < string.sub(b,2 ,2) then
          return true
     else
          return false
     end
end

 

table.sort(name, cmp)
for k, v in ipairs( name) do
     print( k,v)
end

 

2. table.insert (table, [pos,] value)

Inserts element value at position pos in table, shifting up other elements to open space, if necessary. The default value for pos is n+1, where n is the length of the table so that a call table.insert(t,x) inserts x at the end of table t.

復制代碼 代碼如下:

--table.insert --an easy to copy a table to another table or adding elements to an array.!
foo = {"a" ,"c", "d"}
bar = {}
function printt( table)
    for i=1 ,#table do
         print(i,table [i ])
    end
end
print("before insert:" )
printt(foo)
table.insert(foo,2 ,"b")
print("after insert" )
printt(foo)

 

3.  table.concat (table [, sep [, i [, j]]])

Given an array where all elements are strings or numbers, returns table[i]..sep..table[i+1] ··· sep..table[j]. The default value for sep is the empty string, the default for i is 1, and the default for j is the length of the table. If i is greater than j, returns the empty string.

復制代碼 代碼如下:

--table.concat does what it implies. Takes an array and concates to one string.
num = {1 ,2, 3,4,5 ,6}
print(table.concat (num ,"<"))

 

4. table.remove (table [, pos])

Removes from table the element at position pos, shifting down other elements to close the space, if necessary. Returns the value of the removed element. The default value for pos is n, where n is the length of the table, so that a call table.remove(t) removes the last element of table t.

復制代碼 代碼如下:

abc = {"a" ,"b", "c"}
print(table.remove (abc ,2))
print("abc length = " .. #abc)

 

5. table.maxn (table)

Returns the largest positive numerical index of the given table, or zero if the table has no positive numerical indices. (To do its job this function does a linear traversal of the whole table.)
--table.maxn

復制代碼 代碼如下:

apple = {"a" ,"p",[ 5]="e"}
print(table.maxn (apple )) -- 5

 

duck = {[-2 ]=3,[- 1]=0}
print(table.maxn (duck )) -- 0

 

面向對象編程

復制代碼 代碼如下:

--note for a object to work, it needs a closure(inner function with an upvalue(a local value from a higher scope))
--note: the more closures made, the slower the program would run.
function mg1( n)
    local function get ()
         return n ;
    end
    local function inc (m )
        n = n +m ;
    end
    return {get = get, inc= inc}
end

 

object = mg1(50 )
print(object.get ())
print(object["get" ]())

object.inc(2 )
print(object.get ())

----------------------------------------
do
    local function get (o )
         return o.one
    end
    local function inc (self , two )
        self.one = self.one + two
    end
    function mg3 (one )
         return {one = one , get = get , inc = inc }
    end
end
a = mg3(50 )
a:get()
a.inc(a,2 )
print(a:get())

----------------------------------------
do
    local T = {};
    function T:get()
         return self.n ;
    end
    function T:inc(m)
        self.n = self.n + m ;
    end
    function mg4 ( n )
         return {n = n , get =T.get , inc =T.inc }
    end
end

c = mg4(30 )
print(c:get())
c:inc(4 )
print(c:get())

 

 

(完)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品电影在线| 欧洲亚洲免费视频| 国内精品久久久久影院 日本资源| 国产成人精品日本亚洲专区61| 国产精品成人免费电影| 欧美激情视频一区二区三区不卡| 欧美体内谢she精2性欧美| 91亚洲精华国产精华| 91精品国产综合久久香蕉922| 91av免费观看91av精品在线| 久久综合伊人77777尤物| 日韩一区二区三区国产| 欧美成人国产va精品日本一级| 欧美视频中文字幕在线| 国产欧美va欧美va香蕉在| 久久久久久这里只有精品| 国产精品私拍pans大尺度在线| 久久久国产精品亚洲一区| 亚洲第一中文字幕| 色一情一乱一区二区| 欧美有码在线观看| 亚洲男人天堂九九视频| 国产精品综合网站| 国产乱肥老妇国产一区二| 亚洲欧美国产精品专区久久| 亚洲国产精久久久久久| 欧美在线视频播放| 日韩av成人在线观看| 国产综合视频在线观看| 正在播放亚洲1区| 欧美成人中文字幕在线| 日韩美女av在线免费观看| 少妇高潮 亚洲精品| 综合欧美国产视频二区| 91成人福利在线| 久久99国产综合精品女同| 日韩中文字幕av| 日韩中文在线中文网在线观看| 97超碰国产精品女人人人爽| 91香蕉嫩草神马影院在线观看| 国产精品高潮呻吟久久av野狼| 国a精品视频大全| 亚洲v日韩v综合v精品v| 欧美电影《睫毛膏》| 精品人伦一区二区三区蜜桃网站| 自拍偷拍亚洲区| 日本国产精品视频| 亚洲一区av在线播放| 国产91免费看片| 亚洲丝袜一区在线| 91视频8mav| 欧美日韩中文字幕在线视频| 国产视频久久久久| 成人精品一区二区三区电影免费| 激情av一区二区| 一个人看的www久久| 欧洲s码亚洲m码精品一区| 久久亚洲国产精品成人av秋霞| 日本精品免费一区二区三区| 国产亚洲视频在线| 中文字幕亚洲一区| 57pao成人永久免费视频| 九九九热精品免费视频观看网站| 亚洲免费高清视频| 国产精品久久久久久久久久小说| 欧美视频在线观看 亚洲欧| 欧美性做爰毛片| 国产欧美日韩中文| 亚洲色图狂野欧美| 色偷偷888欧美精品久久久| 久久久精品国产| 日产日韩在线亚洲欧美| 欧美影院成年免费版| 国产一区二区三区视频在线观看| 国产精品日韩欧美综合| 亚洲性av在线| 亚洲国产精品99久久| 亚洲综合色av| 成人免费高清完整版在线观看| 国产精品久久久久久中文字| 亚洲精品免费一区二区三区| 国产精品久久精品| 亚洲欧美综合精品久久成人| 国产亚洲欧美日韩一区二区| 91在线视频导航| 欧美在线中文字幕| 色爱精品视频一区| 91国内产香蕉| 日韩在线精品一区| 精品久久香蕉国产线看观看gif| 亚洲第一av网| 亚洲伊人一本大道中文字幕| 欧美一乱一性一交一视频| 亚洲成人精品在线| 国产成人激情视频| 欧美在线不卡区| 亚洲精品中文字| 久久黄色av网站| 色综合久久88色综合天天看泰| 18一19gay欧美视频网站| 国产精品高潮呻吟久久av无限| 夜夜嗨av色综合久久久综合网| 久久久精品欧美| 亚洲区免费影片| 日本国产一区二区三区| 国产精品美乳在线观看| 久久在线免费视频| 欧美日韩精品国产| 日韩中文字幕网址| 91精品国产综合久久久久久久久| 中文字幕欧美视频在线| 精品久久久国产精品999| 亚洲人成绝费网站色www| 欧美精品videos| 97在线观看视频| 亚洲人午夜精品| 欧美黄色成人网| 国产欧美精品一区二区三区-老狼| 精品视频在线播放免| 欧美日韩国产va另类| 日韩精品中文字| 欧美裸身视频免费观看| 亚洲成年人影院在线| 一区二区三区四区在线观看视频| 久久久久久伊人| 日韩精品久久久久久久玫瑰园| 日韩av大片免费看| 美女撒尿一区二区三区| 操人视频在线观看欧美| 欧美一区三区三区高中清蜜桃| 欧美激情videoshd| 国产999视频| 另类美女黄大片| 欧美午夜精品久久久久久人妖| 欧美日韩国内自拍| 国产主播欧美精品| 亚洲午夜精品久久久久久久久久久久| 成人免费视频xnxx.com| 日韩中文字幕在线观看| 亚洲日韩中文字幕| 一本大道亚洲视频| 日韩免费观看高清| 亚洲人精品午夜在线观看| 日韩资源在线观看| 亚洲激情在线观看视频免费| 川上优av一区二区线观看| 国产精品三级美女白浆呻吟| 亚洲国产美女精品久久久久∴| 91久久久久久久久久久| 亚洲国产精品美女| 久久97久久97精品免视看| 欧美国产日产韩国视频| 亚洲有声小说3d| 国产精品一区二区电影| 久久久久久久久久国产| 日韩男女性生活视频| 亚洲精品国产suv| 4444欧美成人kkkk| 欧美日韩国产在线播放| 2018日韩中文字幕| 国产精品久久久久久久久男| 国产69精品久久久久99| 亚洲一区二区三区毛片| 日韩av电影手机在线观看|