一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

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

服務器之家 - 腳本之家 - Lua - Lua編程示例(二):面向對象、metatable對表進行擴展

Lua編程示例(二):面向對象、metatable對表進行擴展

2020-05-06 10:30腳本之家 Lua

這篇文章主要介紹了Lua編程示例(二):面向對象、metatable對表進行擴展,本文直接給出實例代碼,需要的朋友可以參考下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
counter = {
 count = 0
}
function counter.get(self)
 return self.count
end
 
function counter:inc()
 self.count=self.count+1
end
 
print(counter.get(counter))
counter.inc(counter)
print(counter.get(counter))
 
counter2={
 count=4,
 get = counter.get,
 inc = counter.inc,
}
 
print(counter2:get())
counter.inc(counter2)
print(counter2.get(counter2))
 
print()
 
tb1 ={ "alpha","beta","gamma"}
mt={}
setmetatable(tb1,mt)
 
print(getmetatable(tb1) == mt)
 
print()
 
function mt.__add(a,b)
 local result = setmetatable({},mt)
 for i=1,#a do
 table.insert(result,a[i])
 end
 for i=1,#b do
 table.insert(result,b[i])
 end
 return result
end
 
tb2={"aaa","bbb","ccc"}
res=tb1+tb2
for i,v in ipairs(res) do
 print(v)
end
print()
function mt.__unm(a)
 local result = setmetatable({},mt)
 for i=#a , 1 ,-1 do
 table.insert(result,a[i])
 end
 return result
end
 
res=-tb1+tb2
for i,v in ipairs(res) do
 print(v)
end
 
print()
function mt.__tostring(a)
 local result = "{"
 for i,v in ipairs(a) do
 result = result.." "..v
 end
 result = result.." } "
 return result
end
 
print(tb1)
 
function mt.__index(tb1,key)
 print("there is no "..key.." in the table")
 return nil
end
 
print(tb1["fsy"])
 
function mt.__newindex(a,key,v)
 if( key == "haha") then
 error(" Stop laugh!",2)
 else
 rawset(a,key,v)
 end
end
 
tb1.haha="heihei"

 
運行結果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0
1
4
5
 
true
 
alpha
beta
gamma
aaa
bbb
ccc
 
gamma
beta
alpha
aaa
bbb
ccc
 
{ alpha beta gamma }
there is no fsy in the table
nil
lua: my_test.lua:166: Stop laugh!
stack traceback:
 [C]: in function 'error'
 my_test.lua:160: in function <my_test.lua:158>
 my_test.lua:166: in main chunk
 [C]: ?

延伸 · 閱讀

精彩推薦
  • LuaLua中table庫函數方法介紹

    Lua中table庫函數方法介紹

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

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

    Lua中的元方法__newindex詳解

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

    笨木頭8872020-04-09
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

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

    果凍想3702020-04-14
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

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

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

    junjie3632020-04-14
  • LuaLua實現__add方法重載示例

    Lua實現__add方法重載示例

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

    腳本之家7452020-04-24
  • LuaLua中計算、執行字符串中Lua代碼的方法

    Lua中計算、執行字符串中Lua代碼的方法

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

    腳本之家6322020-04-30
  • LuaLua教程(二):基礎知識、類型與值介紹

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

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

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

    深入探究Lua中的解析表達式

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

    腳本之家3542020-05-05
主站蜘蛛池模板: 非洲黑人又大粗gay 非洲黑人bbwbbwbbw | 无限在线看免费视频大全 | 国产特黄a级在线视频 | 小草观看免费高清视频 | 日韩大片免费观看 | 2019天天干天天操 | 乌克兰成人性色生活片 | 美女的让男人桶爽30分钟的 | 久久久91精品国产一区二区 | 日韩在线视频免费观看 | 精品国产午夜久久久久九九 | 四虎一区 | 无遮掩60分钟从头啪到尾 | ts人妖国产一区 | 白丝憋尿 | 美女黄金大片视频免费看 | 末代皇帝无删减版在线观看 | 韩国女主播一区二区视频 | 国产高清一区二区三区免费视频 | 欧美久久一区二区三区 | 末代皇帝无删减版在线观看 | 亚洲无线一二三四区 | 97国产蝌蚪视频在线观看 | 午夜影院免费入口 | 色哟哟国产成人精品 | 国产日韩欧美在线一区二区三区 | 国产一区二区三区久久小说 | 亚洲成a人片777777久久 | 久久久久伊人 | 9自拍视频在线观看 | 成人网子| 欧美一区精品 | 18韩国美女vip视频7 | 插入肥臀 | 日韩成人免费aa在线看 | 精品一区二区三区免费观看 | 免费国产之a视频 | 美女被狂干 | 成人影院免费在线观看 | 日本不卡在线观看免费v | 亚洲免费网站在线观看 |