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

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

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

上一節(jié)對(duì)元表和元方法有了一個(gè)初步的認(rèn)識(shí),這篇就來(lái)舉個(gè)最簡(jiǎn)單的例子吧,加深一下印象,也為后續(xù)內(nèi)容做準(zhǔn)備。

1.元方法名

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

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

2.例子

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

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

    -- 創(chuàng)建一個(gè)元表
    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

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

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

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

其實(shí)我們可以把s1和s2當(dāng)成是類的對(duì)象,實(shí)際上Lua也可以模擬類的結(jié)構(gòu),目前暫時(shí)不說,配合看書的進(jìn)度~
輸出結(jié)果如下:

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

相關(guān)文章

  • Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解

    Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解

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

    詳解Lua中的元表概念

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

    Lua學(xué)習(xí)筆記之函數(shù)、變長(zhǎng)參數(shù)、closure(閉包)、select等

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

    Lua一維數(shù)組與多維數(shù)組的使用示例

    今天小編就為大家分享一篇關(guān)于Lua一維數(shù)組與多維數(shù)組的使用示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • 實(shí)現(xiàn)Lua中數(shù)據(jù)類型的源碼分享

    實(shí)現(xiàn)Lua中數(shù)據(jù)類型的源碼分享

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

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

    這篇文章主要介紹了Lua教程(十七):C API簡(jiǎn)介,本文講解了基礎(chǔ)知識(shí)、棧、C API中的錯(cuò)誤處理、Lua調(diào)用C程序、C程序調(diào)用Lua代碼的錯(cuò)誤處理等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua編程示例(二):面向?qū)ο?、metatable對(duì)表進(jìn)行擴(kuò)展

    Lua編程示例(二):面向?qū)ο?、metatable對(duì)表進(jìn)行擴(kuò)展

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

    淺談chuck-lua中的多線程

    Lua對(duì)多線程支持初步體驗(yàn)是本文要介紹的內(nèi)容,主要是來(lái)了解LUA中多線程的使用,,經(jīng)過反復(fù)的實(shí)驗(yàn)得到的結(jié)果是,lua不支持多線程,如何讓它支持?來(lái)看本文內(nèi)容。
    2015-07-07
  • Lua中算術(shù)運(yùn)算符的使用示例

    Lua中算術(shù)運(yùn)算符的使用示例

    這篇文章主要介紹了Lua中算術(shù)運(yùn)算符的使用示例,是Lua入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Lua中的函數(shù)知識(shí)總結(jié)

    Lua中的函數(shù)知識(shí)總結(jié)

    這篇文章主要介紹了Lua中的函數(shù)知識(shí)總結(jié),本文講解了函數(shù)的一些基礎(chǔ)知識(shí)、多重返回值問題、變長(zhǎng)參數(shù)、內(nèi)嵌函數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-09-09

最新評(píng)論