Lua 閉包實現類

閉包

百度解釋:
閉包就是能夠讀取其他函數內部變量的函數。例如在javascript中,只有函數內部的子函數才能讀取局部變量,所以閉包可以理解成“定義在一個函數內部的函數“。在本質上,閉包是將函數內部和函數外部連接起來的橋樑。

實例

實現類 類的繼承 方法的重寫

-- 閉包方式實現類
function People(name)
    local self = {}

    local function init()   -- 構造方法
        self.name = name
    end
    
    self.SayHi = function ()
        print("Hello  "..self.name)
    end

    init()
    return self
end

-- 閉包實現類的繼承

function Man(name)
    local self = People(name)

    local function init()
    end

    self.SayHello = function()
        print("Hello man "..self.name)
    end

    init()
    return self
end

local m = Man("chasinghope")
m:SayHello()       -- 調用自己的方法
m:SayHi()          -- 調用繼承People的方法


--  閉包實現類的重寫

function Woman(name)
    local self = People(name)

    local function init()
        
    end

    self.SayHi = function ()
        print("I am Woman. I will rewrite People.  "..self.name)
    end

    init()
    return self
end

local n = Woman("chasinghopetwo")
n:SayHi()                -- 重寫SayHi方法測試

代碼塊有點醜,因爲markdown沒lua

吐槽一下,哈哈
在這裏插入圖片描述

個人總結

一句話總結Lua:萬物皆是表!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章