上一節(jié)對元表和元方法有了一個初步的認(rèn)識,這篇就來舉個最簡單的例子吧,加深一下印象,也為后續(xù)內(nèi)容做準(zhǔn)備。
1.元方法名
Lua其實已經(jīng)規(guī)定好了各種算術(shù)操作符的元方法名字,如:
__add:加法
__sub:減法
__mul:乘法
__div:除法
__unm:相反數(shù)
__mod:取模
__pow:乘冪
只要在自定義元表的時候,給這些元方法名賦予新的函數(shù)就可以實現(xiàn)自定義操作了。
2.例子
開始舉例吧,我們新建一個自定義的元表(也就是一個table變量),用來定義一些操作:
復(fù)制代碼 代碼如下:
-- 創(chuàng)建一個元表
local mt = {};
mt.__add = function(s1, s2)
local result = "";
if s1.sex == "boy" and s2.sex == "girl" then
result = "完美的家庭。";
elseif s1.sex == "girl" and s2.sex == "girl" then
result = "哦呵呵";
else
result = "蛇精病"
end
return result;
end
其實這和上一節(jié)的例子基本一樣,只是多說一次而已,使用方式如下:
復(fù)制代碼 代碼如下:
-- 創(chuàng)建兩個table,可以想象成是兩個類的對象
local s1 = {
name = "Hello",
sex = "boy",
};
local s2 = {
name = "Good",
sex = "girl",
};
-- 給兩個table設(shè)置新的元表
setmetatable(s1, mt);
setmetatable(s2, mt);
-- 進行加法操作
local result = s1 + s2;
print(result);
其實我們可以把s1和s2當(dāng)成是類的對象,實際上Lua也可以模擬類的結(jié)構(gòu),目前暫時不說,配合看書的進度~
輸出結(jié)果如下:
[LUA-print] 完美的家庭。
很簡單吧,我們可以給“類”賦予自定義的元表,改變加法、減法等算術(shù)操作。
好了,這篇有點短,只是作為上一篇的補充,或者說,換一種方式敘述而已。
您可能感興趣的文章:- Lua中的元表與元方法學(xué)習(xí)總結(jié)
- Lua中的元表(metatable)、元方法(metamethod)詳解
- 詳解Lua中的元表概念