校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua中使用元表(metatable)執行算術類元方法實例

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

熱門標簽:400手機電話免費辦理 百度地圖標注位置網站 上海企業外呼系統排名 如何利用高德地圖標注家 電腦外呼系統輻射大嗎 開通400電話申請流程 智能語音電銷的機器人 揚州電銷外呼系統軟件 武漢百應人工智能電銷機器人

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

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

您可能感興趣的文章:
  • Lua中的元表與元方法學習總結
  • Lua中的元表(metatable)、元方法(metamethod)詳解
  • 詳解Lua中的元表概念

標簽:江西 張掖 武漢 新余 延邊 宜賓 黑龍江 嘉峪關

巨人網絡通訊聲明:本文標題《Lua中使用元表(metatable)執行算術類元方法實例》,本文關鍵詞  Lua,中,使用,元表,metatable,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中使用元表(metatable)執行算術類元方法實例》相關的同類信息!
  • 本頁收集關于Lua中使用元表(metatable)執行算術類元方法實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 寻乌县| 岗巴县| 永济市| 禄丰县| 白玉县| 漳平市| 鄂伦春自治旗| 湘乡市| 武夷山市| 东台市| 江华| 来凤县| 京山县| 新密市| 芮城县| 宜黄县| 怀宁县| 同江市| 互助| 九寨沟县| 嵊州市| 万年县| 朔州市| 榆树市| 塘沽区| 建湖县| 漠河县| 酒泉市| 皋兰县| 东丽区| 上林县| 静宁县| 侯马市| 凌海市| 白朗县| 扎囊县| 张家港市| 名山县| 鄂托克前旗| 栾城县| 水城县|