婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)

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

熱門(mén)標(biāo)簽:上海企業(yè)外呼系統(tǒng)排名 武漢百應(yīng)人工智能電銷(xiāo)機(jī)器人 400手機(jī)電話免費(fèi)辦理 揚(yáng)州電銷(xiāo)外呼系統(tǒng)軟件 智能語(yǔ)音電銷(xiāo)的機(jī)器人 電腦外呼系統(tǒng)輻射大嗎 開(kāi)通400電話申請(qǐng)流程 如何利用高德地圖標(biāo)注家 百度地圖標(biāo)注位置網(wǎng)站

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

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

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

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

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

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

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

3.保護(hù)元表

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

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

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

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

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

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

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

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

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

4.結(jié)束

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

您可能感興趣的文章:
  • Lua中使用元表(metatable)執(zhí)行算術(shù)類(lèi)元方法實(shí)例
  • Lua中的元表(metatable)、元方法(metamethod)詳解

標(biāo)簽:延邊 張掖 宜賓 江西 新余 黑龍江 嘉峪關(guān) 武漢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)》,本文關(guān)鍵詞  Lua,中,關(guān)于,元,方法,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 饶河县| 黔东| 唐山市| 津市市| 封开县| 望城县| 乌鲁木齐市| 阿拉善左旗| 柞水县| 高雄县| 贵港市| 保德县| 平远县| 武城县| 旌德县| 洞口县| 敦煌市| 仙桃市| 贞丰县| 若尔盖县| 博野县| 峨眉山市| 夹江县| 河源市| 望城县| 兴安县| 兴安盟| 清原| 浦城县| 中超| 项城市| 名山县| 永新县| 田林县| 白河县| 苍山县| 民丰县| 孙吴县| 南昌县| 双江| 五家渠市|