国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Lua - Lua table類型學(xué)習(xí)筆記

Lua table類型學(xué)習(xí)筆記

2020-04-27 11:19腳本之家 Lua

這篇文章主要介紹了Lua table類型學(xué)習(xí)筆記,本文講解了table的基礎(chǔ)知識和table庫函數(shù)的使用以及面向?qū)ο缶幊虒嵗?需要的朋友可以參考下

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

基本介紹

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

例如:

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


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沒有賦值,所以默認(rèn)為nil因此出錯table index is nil

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

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


print(tab[temp]) --此時的結(jié)果是11,因為11沒有顯式對應(yīng)的key,因此從1開始,如果前面定義了,則覆蓋其value

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

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


print(tab[temp]) -- 結(jié)果是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

嵌套

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

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

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


--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的易變性

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


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

 

c,d = {},{};

print(c == d) -->false

 

table庫函數(shù)使用
-----------------------------------------------------------
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.

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


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.

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

--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.

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

--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.

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

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

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


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

 

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

 

面向?qū)ο缶幊?/strong>

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


--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())

 

 

(完)

延伸 · 閱讀

精彩推薦
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua中計算、執(zhí)行字符串中Lua代碼的方法

    Lua中計算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua實現(xiàn)__add方法重載示例

    Lua實現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實現(xiàn)__add方法重載示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實例詳細(xì)講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua教程(二):基礎(chǔ)知識、類型與值介紹

    Lua教程(二):基礎(chǔ)知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎(chǔ)知識、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • Lua深入探究Lua中的解析表達(dá)式

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

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

    腳本之家3542020-05-05
主站蜘蛛池模板: 91精品国产高清久久久久久久久 | 免费日本视频 | 成人综合在线观看 | 欧美成人精品一区二区 | 中文在线资源 | 男人的天堂亚洲 | 久久久综合网 | 精品久久久久一区二区国产 | 欧美黄色小视频 | 国产视频一区在线 | 狠狠久久综合 | 欧美尹人 | 欧美一区二区三区精品 | 国产黄色在线观看 | jizzz中国| 亚洲色图综合 | 国产精品视频一 | 亚洲福利在线观看 | 久久99精品久久久久久园产越南 | 春色网站 | 久久久久亚洲美女啪啪 | 亚洲国产精品久久久久婷婷老年 | 欧美久久综合 | 久久久久久久91 | 7799精品天天综合网 | 亚洲成av人片在线观看 | 色婷婷导航 | 精品一区二区久久久久黄大片 | 成人午夜在线视频 | 欧洲亚洲精品久久久久 | 一区二区三区精品 | 羞羞视频免费观看网站 | 午夜精品久久久久久 | 精品中出 | 国产精品极品美女在线观看免费 | 国产成人精品一区二 | 极品一区| 国产第1页| 一级片av| 精品护士一区二区三区 | 欧美视频在线播放 |