lua 實現類 和 繼承

2021-09-27 12:20:13 字數 919 閱讀 4570

lua 實現類 繼承

需要以 table(表) 的形式實現 table:lua的資料結構之一

setmetatable(a,b) => 設定a的元表為b

設定完元表之後 還要將 b的__index 指向自身

這樣的話 在a中查詢元素找不到的話,就會去b中查詢

如果b的__index沒有賦值,那麼及時b中存在也會返回nil(空)

過程: 當在a中查詢元素找不到的話, lua就會判斷 a 是否設定的有 元表,

沒有就返回nil,有的話 看其__index是否為空,為空返回nil,存在就返回並指向一張表(__index 指向一張表的前提下), 然後再次迴圈這個過程

類:people =

people.__index = people

function people:new()

local p =

setmetatable(p,people)

return p

endfunction people:getage()

return people.age

endlocal p = people:new()

print(p.age , p:getage())

繼承:require(『people』)

son = {}

setmetatable(son,people)

function son:new()

local s = {}

setmetatable(s,people)

return s

endlocal s = son:new()

print(s.age)

除錯結果為: 10 10

哈嘍

Lua實現類和其繼承

file name lua class.lua author clark 陳澤丹 created 5 8 2011 purpose lua類探索 function newmap mapname,mapid newmap類 local obj function obj setname mapname ...

lua實現類的繼承

local class function class super local class type class type.ctor false class type.super super class type.new function local obj do 遞迴呼叫建構函式,實現構造基類的資料...

lua 類的繼承實現

1.lua 類中其實沒有類的概念,乙個類只是用乙個表 table 來管理的,如果想要實現子類繼承父類,簡單來說就是把兩個表組到一起。2.lua中提供了原表 metatable 可以通過原表來改變原來lua類的一些行為,比如把兩個表相加 a b father classfather.index cla...