国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Lua中使用元表(metatable)執行算術類元方法實例

2024-07-21 23:04:03
字體:
來源:轉載
供稿:網友

上一節對元表和元方法有了一個初步的認識,這篇就來舉個最簡單的例子吧,加深一下印象,也為后續內容做準備。

1.元方法名

Lua其實已經規定好了各種算術操作符的元方法名字,如:

__add:加法
__sub:減法
__mul:乘法
__div:除法
__unm:相反數
__mod:取模
__pow:乘冪
 
只要在自定義元表的時候,給這些元方法名賦予新的函數就可以實現自定義操作了。

2.例子

開始舉例吧,我們新建一個自定義的元表(也就是一個table變量),用來定義一些操作:

復制代碼 代碼如下:

    -- 創建一個元表
    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

 

其實這和上一節的例子基本一樣,只是多說一次而已,使用方式如下:

復制代碼 代碼如下:

    -- 創建兩個table,可以想象成是兩個類的對象
    local s1 = {
        name = "Hello",
        sex = "boy",
    }; 
    local s2 = {
        name = "Good",
        sex = "girl",
    };
  
    -- 給兩個table設置新的元表
    setmetatable(s1, mt);
    setmetatable(s2, mt);
  
    -- 進行加法操作
    local result = s1 + s2;
  
    print(result);

 

其實我們可以把s1和s2當成是類的對象,實際上Lua也可以模擬類的結構,目前暫時不說,配合看書的進度~
輸出結果如下:

[LUA-print] 完美的家庭。
 
很簡單吧,我們可以給“類”賦予自定義的元表,改變加法、減法等算術操作。
 
好了,這篇有點短,只是作為上一篇的補充,或者說,換一種方式敘述而已。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵊泗县| 大洼县| 长治市| 温泉县| 吉林市| 中卫市| 宜君县| 贵阳市| 宁明县| 元谋县| 蓝山县| 赤城县| 镇安县| 吉林市| 西城区| 三穗县| 汝南县| 平果县| 淮安市| 英德市| 剑河县| 陇西县| 张掖市| 平果县| 民勤县| 福州市| 斗六市| 西和县| 九寨沟县| 西宁市| 嘉黎县| 大渡口区| 鄯善县| 观塘区| 家居| 江华| 厦门市| 烟台市| 桐柏县| 军事| 瓦房店市|