最新国产好看的视频,伊人天堂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í),這篇就來舉個(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變量),用來定義一些操作:

復(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中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語句講解

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

    這篇文章主要介紹了Lua中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語句講解,總結(jié)了Lua入門學(xué)習(xí)中的基礎(chǔ)語法知識(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讀寫文件代碼示例

    Lua讀寫文件代碼示例

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

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

    這篇文章主要介紹了Lua中table庫函數(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ù)庫匯總

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

    這篇文章主要介紹了Lua中的常用函數(shù)庫匯總,本文羅列了lua庫函數(shù)、數(shù)學(xué)函數(shù)、字符串庫、表函數(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)論

疏勒县| 天门市| 德安县| 南宫市| 股票| 兰西县| 怀来县| 司法| 南昌市| 城口县| 绍兴县| 岫岩| 重庆市| 遂昌县| 灵璧县| 墨竹工卡县| 城固县| 彩票| 清河县| 额济纳旗| 阿克陶县| 霍山县| 唐河县| 华坪县| 双峰县| 体育| 井冈山市| 东海县| 综艺| 永登县| 玉龙| 兴文县| 泰来县| 莎车县| 彭山县| 溧阳市| 昌都县| 宁陵县| 陇南市| 大埔县| 龙井市|