濮阳杆衣贸易有限公司

主頁 > 知識庫 > Lua table類型學習筆記

Lua table類型學習筆記

熱門標簽:清朝地圖標注哈爾濱 冀州市地圖標注 漳州智云呼電話機器人 新岸線智能電銷機器人 武漢外呼防封系統(tǒng)多少錢 地圖標注大廈 百度地圖標注早餐區(qū)域 怎么去除地圖標注 個人怎么在地圖標注需要的店鋪

關系表類型,這是一個很強大的類型。我們可以把這個類型看作是一個數組。只是 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())

(完)

您可能感興趣的文章:
  • Lua中對table排序實例
  • Lua中table的一些輔助函數介紹
  • Lua table簡明總結
  • Lua中的metatable詳解
  • Lua中table庫函數方法介紹
  • Lua中的table學習筆記

標簽:金昌 德宏 天門 宣城 濰坊 臺灣 天門 儋州

巨人網絡通訊聲明:本文標題《Lua table類型學習筆記》,本文關鍵詞  Lua,table,類型,學習,筆記,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua table類型學習筆記》相關的同類信息!
  • 本頁收集關于Lua table類型學習筆記的相關信息資訊供網民參考!
  • 推薦文章
    阳西县| 元朗区| 囊谦县| 定襄县| 迁西县| 武安市| 藁城市| 崇文区| 西贡区| 南平市| 五大连池市| 枣庄市| 金秀| 新田县| 正定县| 连江县| 开封县| 华池县| 三河市| 巢湖市| 夏邑县| 永年县| 祁门县| 缙云县| 德州市| 红河县| 滦南县| 东平县| 大安市| 江都市| 江达县| 兴国县| 万山特区| 延寿县| 南宫市| 玉林市| 阿鲁科尔沁旗| 鄂托克前旗| 馆陶县| 鱼台县| 米泉市|