最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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.例子

開(kāi)始舉例吧,我們新建一個(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é)的例子基本一樣,只是多說(shuō)一次而已,使用方式如下:

復(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í)不說(shuō),配合看書(shū)的進(jìn)度~
輸出結(jié)果如下:

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

相關(guān)文章

  • Lua中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語(yǔ)句講解

    Lua中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語(yǔ)句講解

    這篇文章主要介紹了Lua中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語(yǔ)句講解,總結(jié)了Lua入門學(xué)習(xí)中的基礎(chǔ)語(yǔ)法知識(shí),需要的朋友可以參考下
    2016-06-06
  • Lua中的閉包學(xué)習(xí)筆記

    Lua中的閉包學(xué)習(xí)筆記

    這篇文章主要介紹了Lua中的閉包學(xué)習(xí)筆記,閉包是可以包含自由(未綁定到特定對(duì)象)變量的代碼塊;這些變量不是在這個(gè)代碼塊內(nèi)或者任何全局上下文中定義的,而是在定義代碼塊的環(huán)境中定義(局部變量),需要的朋友可以參考下
    2014-12-12
  • Lua中關(guān)系運(yùn)算符的使用教程

    Lua中關(guān)系運(yùn)算符的使用教程

    這篇文章主要介紹了Lua中關(guān)系運(yùn)算符的使用教程,是Lua學(xué)習(xí)入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Lua內(nèi)置的調(diào)試器用法詳解

    Lua內(nèi)置的調(diào)試器用法詳解

    這篇文章主要介紹了Lua內(nèi)置的調(diào)試器用法,在編程debug操作中非常有用,要的朋友可以參考下
    2015-05-05
  • Lua讀寫(xiě)文件代碼示例

    Lua讀寫(xiě)文件代碼示例

    這篇文章主要介紹了Lua讀寫(xiě)文件代碼示例,本文講解了讀寫(xiě)文件的模式以及讀寫(xiě)文件代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua中table庫(kù)函數(shù)方法介紹

    Lua中table庫(kù)函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫(kù)函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下
    2014-11-11
  • lua中操作json數(shù)據(jù)的方法

    lua中操作json數(shù)據(jù)的方法

    這篇文章主要介紹了lua中操作json數(shù)據(jù)的方法,本文講解使用cjson包操作JSON數(shù)據(jù),并給出了操作實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua中的邏輯運(yùn)算符使用詳解

    Lua中的邏輯運(yùn)算符使用詳解

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

    Lua中的常用函數(shù)庫(kù)匯總

    這篇文章主要介紹了Lua中的常用函數(shù)庫(kù)匯總,本文羅列了lua庫(kù)函數(shù)、數(shù)學(xué)函數(shù)、字符串庫(kù)、表函數(shù)、Bit Functions,需要的朋友可以參考下
    2014-09-09
  • Lua中獲取utf8字符串長(zhǎng)度的方法和自定義函數(shù)

    Lua中獲取utf8字符串長(zhǎng)度的方法和自定義函數(shù)

    這篇文章主要介紹了Lua中獲取utf8字符串長(zhǎng)度的方法和自定義函數(shù),本文給出了代碼實(shí)例并講解了UTF8的編碼規(guī)則,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

松原市| 玛多县| 临漳县| 清新县| 页游| 杭锦旗| 同仁县| 禹州市| 繁昌县| 交口县| 安宁市| 海宁市| 霍林郭勒市| 岢岚县| 桑植县| 贡山| 海门市| 伊通| 新巴尔虎左旗| 肇州县| 阳新县| 镇康县| 铜川市| 科尔| 瑞安市| 武穴市| 内黄县| 望城县| 濮阳市| 常德市| 仪征市| 门头沟区| 崇义县| 中江县| 内乡县| 阳朔县| 延津县| 洞头县| 澳门| 策勒县| 紫阳县|