Lua初學習 9 13 03 元表與元方法

2022-08-01 18:27:12 字數 1062 閱讀 8430

1:元表與元方法

a= b={}

setmetatable(b,a)

測試001:

print(a.age) ----> a age 18

print(b.age) ----> nil  

測試002:

a.__index = a

print(a.age) ----> a age 18

print(b.age) ----> a age 18

測試003-1:

a.orz = 99

b.orz = 100

print(b.orz) ----> 100

測試003-2:

a.orz = 99

a.__newindex = function () print("a new index") end

b.orz = 100

print(b.orz)  -----> 99   (a:b在給字段orz賦值的時候,會調元表裡面的元方法__newindex,調完之後b.orz並沒有賦值,列印b.orz的時候,發現沒有值,去訪問元表中的元方法__index,---> 99 )

當設定乙個 table key的value值時,先訪問table的元表中的元方法__newindex,(如果table的元表裡面重新定義了__newindex,將會呼叫元表中的元方法__newindex)

總結:__index  和 __newindex 都是在table中沒有所需訪問的index時才發揮作用。

2: 具有預設值的table

其實就是設定了 table 的元表,在元表裡面重寫元方法 __index ,這個方法返回乙個 固定的值,比如 0 或者 1

3:唯讀的table

function readonly(t)

table proxy = {}

table mt =

setmetatable(proxy,mt)

return proxy

end****************************************===

用上述的方法返回乙個唯讀的table ( readonly())

lua元表與元方法

1.首先我們先了解下lua的表 2.元表 是用來定義對table操作的方式表 我們先來看一下問題 t1 t2 我們把這兩張錶拼起來 第一種方法 table.inster t1,t2 1 第二種方法 元表 mt 方法類似於c 的運算子過載可以看出我們過載的是 mt.add function t1,t2...

lua元表與元方法

lua中提供的元表 metatable 與元方法 metamethod 是一種非常重要的語法,metatable主要用於做一些類似於c 過載操作符式的功能。lua中提供的元表是用於幫助lua變數完成某些非預定義功能的個性化行為,如兩個table的相加,通過讓兩者指向同一元表並修改該元表的元方法可以實...

Lua語言學習之元表與元方法

元表與元方法 在學習table的時候已經提到這兩個概念。其實,可以把這兩個概念和c 中的運算子過載進行比較,在功能上確有相似性。例如,c 中自定義的型別不能進行數 算,但是我們可以過載運算子就可以 進行數 算操作。lua中就是用元表和元方法來實現這個功能的。lua中的 table 都可以有元表,我們...