激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務(wù)器之家 - 腳本之家 - Lua - Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)

Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)

2020-04-09 14:12笨木頭 Lua

這篇文章主要介紹了Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié),本文講解了兩個(gè)具有不同元表的值進(jìn)行算術(shù)操作、關(guān)系類的元方法、保護(hù)元表,需要的朋友可以參考下

本篇要介紹的東西比較零散,都是一些小知識(shí)點(diǎn),所以就放在一起了。

1.兩個(gè)具有不同元表的值進(jìn)行算術(shù)操作(比如加法)

之前舉例的時(shí)候,兩個(gè)table相加,這兩個(gè)table都是具有相同的元表的,所以沒有任何問題。
那么,如果兩個(gè)table或者兩個(gè)進(jìn)行相加操作的值,具有不同的元表呢?

對(duì)于這種情況,Lua是這樣處理:

a.如果第一個(gè)值有元表,就以這個(gè)元表為準(zhǔn)
b.否則,如果第二個(gè)值有元表,就用第二個(gè)值的元表
c.如果兩個(gè)值都沒有元表,或者沒有對(duì)于的元方法,那么,就會(huì)報(bào)錯(cuò)
 

2.關(guān)系類的元方法

除了加法減法這些算術(shù)類的操作之外,大于小于等這些關(guān)系類的操作也是有元方法的:
__eq:等于
__lt:小于
__le:小于等于
 
如果對(duì)兩個(gè)具備不同元表的值進(jìn)行這些比較操作,就會(huì)報(bào)錯(cuò),一定要注意,這和加減法的規(guī)則不一樣。
其實(shí)想想也很有道理,元表都不一樣了,怎么去判斷大小呢?判斷大小是要有規(guī)則的。
 
比如,在軍隊(duì)里,中尉的職位肯定是小于上校的職位。
然后,到了外星世界呢(假設(shè)有外星人)?說不定中尉是大于上校的。
所以,地球人和外星人是不能用同一種方式進(jìn)行軍銜比較的。
 
當(dāng)然,大家也許會(huì)說:那地球人和外星人也不能用同一種方式進(jìn)行加法操作啊!
沒錯(cuò),但是,Lua就是這么規(guī)定的?。∧阏易髡呷グ?!關(guān)我什么事!
 
最后,比較特殊的,進(jìn)行“等于”操作,是不會(huì)報(bào)錯(cuò)的,哪怕是具有不同元表的值進(jìn)行等于操作。
其實(shí)這想想也是很有道理,地球人等于外星人嗎?不等于。在外星那邊,外星人也會(huì)得到一樣的答案,即使判斷標(biāo)準(zhǔn)不同。
(小若:Lua就是這么規(guī)定的,你還有道理個(gè)毛線??!圍繞著規(guī)則去說道理,很好玩嗎?)
 

3.保護(hù)元表

我們都知道,通過setmetatable和getmetatable可以分別設(shè)置和獲得元表。

但是,如果我們不希望元表被修改或者被看到呢?

比如某天你當(dāng)了主程,你寫了一個(gè)很牛的模塊,因?yàn)槟承┰蛞唤o一個(gè)剛畢業(yè)不到30年的學(xué)生去修改。

(小若:畢業(yè)30年那還叫做學(xué)生嗎?都快要退休了吧!)

你很肯定你的某個(gè)值的元表是不能被改動(dòng)的,那,你就可以把它保護(hù)起來了。
 
我們可以給元表的__metatable字段賦值,比如:mt.__metatable = “你別碰它的元表,否則過了10年的試用期之后,你就等著走人吧!”

然后,如果那個(gè)畢業(yè)不到30年的學(xué)生真的不小心去修改你的元表的話:

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

print(getmetatable(s1));
setmetatable(s1, mt);


將會(huì)輸出類似以下的日志:
你別碰它的元表,否則過了10年的試用期之后,你就等著走人吧!
cannot change protected metatable
 
好了,這樣這個(gè)學(xué)生就肯定不改你的元表了,畢竟工作要緊。(小若:試用期10年,真是個(gè)好公司)
 

 

4.結(jié)束

本來還想接著寫下一篇的,畢竟時(shí)間還早,但是下一篇要介紹__index和__newindex。
我感覺我會(huì)說的比較多,還是明晚再寫吧。

延伸 · 閱讀

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

    Lua簡(jiǎn)介、編譯安裝教程及變量等語法介紹

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

    junjie3632020-04-14
  • Lua深入探究Lua中的解析表達(dá)式

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

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

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

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

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

    腳本之家2502020-04-17
  • LuaLua教程(二):基礎(chǔ)知識(shí)、類型與值介紹

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

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

    腳本之家5922020-04-28
  • LuaLua中計(jì)算、執(zhí)行字符串中Lua代碼的方法

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

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

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

    Lua和C語言的交互詳解

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

    果凍想3702020-04-14
  • LuaLua實(shí)現(xiàn)__add方法重載示例

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

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

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

    Lua中的元方法__newindex詳解

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

    笨木頭8872020-04-09
主站蜘蛛池模板: 欧美性色生活片免费播放 | 性生活视频软件 | 日韩视频一区在线 | 亚洲成人播放 | 日日综合 | 黄污视频在线看 | 中文字幕精品一区久久久久 | 毛片区| 欧洲精品久久 | 中文字幕在线亚洲精品 | 精品久久久久久久久中文字幕 | 国产欧美精品综合一区 | 999精品久久久 | 欧美视频一二三区 | 成人免费av在线 | 成人免费一区二区三区视频网站 | 亚洲资源在线播放 | 免费看污视频在线观看 | 国产无限资源在线观看 | 本色视频aaaaaa一级网站 | 免费毛片小视频 | 国产精品久久久久久238 | av免费av| 激情小说激情电影 | 欧美日韩国产中文字幕 | 亚洲人成在线播放网站 | 免费1级做55爰片l在线观看 | 欧美爱爱一区二区 | 中文字幕网在线 | 最新亚洲国产 | 最新欧美精品一区二区三区 | 欧美一区2区三区4区公司二百 | 91成人亚洲 | 一级大片视频 | 久久亚洲精品国产一区 | 91麻豆精品国产91久久久无需广告 | 国产亚洲在 | 久久99国产精品免费网站 | 老司机免费福利午夜入口ae58 | 欧美性xxxx狂欢老少配 | 学霸趴下被打肿光屁股小说 |