欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年09月15日 08:46:30   投稿:junjie  
這篇文章主要介紹了Lua中使用元表(metatable)執(zhí)行算術類元方法實例,本文給出了加法、減法、乘法、除法、相反數、取模等內容,需要的朋友可以參考下

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

1.元方法名

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

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

2.例子

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

復制代碼 代碼如下:

    -- 創(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é)的例子基本一樣,只是多說一次而已,使用方式如下:

復制代碼 代碼如下:

    -- 創(chuàng)建兩個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中編譯執(zhí)行代碼相關的函數詳解

    Lua中編譯執(zhí)行代碼相關的函數詳解

    這篇文章主要介紹了Lua中編譯執(zhí)行代碼相關的函數詳解的相關資料,需要的朋友可以參考下
    2015-04-04
  • 詳解Lua中的元表概念

    詳解Lua中的元表概念

    這篇文章主要介紹了詳解Lua中的元表,是Lua入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • Lua學習筆記之函數、變長參數、closure(閉包)、select等

    Lua學習筆記之函數、變長參數、closure(閉包)、select等

    這篇文章主要介紹了Lua學習筆記之函數、變長參數、closure(閉包)、select等,本文著重講解了這些特性的用法,并給出代碼實例,需要的朋友可以參考下
    2015-04-04
  • Lua一維數組與多維數組的使用示例

    Lua一維數組與多維數組的使用示例

    今天小編就為大家分享一篇關于Lua一維數組與多維數組的使用示例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 實現Lua中數據類型的源碼分享

    實現Lua中數據類型的源碼分享

    在Lua中有8種基礎類型,像其他動態(tài)語言一樣,在語言中沒有類型定義的語法,每個值都攜帶了它自身的類型信息。下面我們就來嘗試通過Lua 5.2.1的源碼來看類型的實現
    2015-04-04
  • Lua教程(十七):C API簡介

    Lua教程(十七):C API簡介

    這篇文章主要介紹了Lua教程(十七):C API簡介,本文講解了基礎知識、棧、C API中的錯誤處理、Lua調用C程序、C程序調用Lua代碼的錯誤處理等內容,需要的朋友可以參考下
    2015-04-04
  • Lua編程示例(二):面向對象、metatable對表進行擴展

    Lua編程示例(二):面向對象、metatable對表進行擴展

    這篇文章主要介紹了Lua編程示例(二):面向對象、metatable對表進行擴展,本文直接給出實例代碼,需要的朋友可以參考下
    2015-07-07
  • 淺談chuck-lua中的多線程

    淺談chuck-lua中的多線程

    Lua對多線程支持初步體驗是本文要介紹的內容,主要是來了解LUA中多線程的使用,,經過反復的實驗得到的結果是,lua不支持多線程,如何讓它支持?來看本文內容。
    2015-07-07
  • Lua中算術運算符的使用示例

    Lua中算術運算符的使用示例

    這篇文章主要介紹了Lua中算術運算符的使用示例,是Lua入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • Lua中的函數知識總結

    Lua中的函數知識總結

    這篇文章主要介紹了Lua中的函數知識總結,本文講解了函數的一些基礎知識、多重返回值問題、變長參數、內嵌函數等內容,需要的朋友可以參考下
    2014-09-09

最新評論