lua元表與元方法

2021-10-23 17:24:14 字數 1410 閱讀 3527

1.首先我們先了解下lua的表

2.元表

· 是用來定義對table操作的方式表

· 我們先來看一下問題

t1 =

t2 =

我們把這兩張錶拼起來

第一種方法

table.inster(t1,t2[1])

第二種方法

--元表

mt =

--方法類似於c++的運算子過載可以看出我們過載的是+

mt.__add =

function

( t1,t2 )

local temp =

for _,v in

pairs

(t1)

do table.

insert

(temp,v)

endfor _,v in

pairs

(t2)

do table.

insert

(temp,v)

endreturn temp

endt1 =

t2 =

setmetatable

(t1,mt)

--t3中就存了t1,t2的元素

t3 =t1+t2

3.元方法(雙_)

· __index

用來對錶訪問,但訪問時發現表中沒有這個鍵值那麼就會從設定的metarable中找到__index所對應的表中找鍵值沒有為nil

案例

other =

t=setmetatable

(t,)

print

(t["foo"])

--3print

(t["foo1"])

--nil

· __newindex

就是在對錶進行缺少賦值時比如t1.newkey = 6就會查詢__newindex對應的表然後存進去

案例

mytable1 =

mytable2 =

setmetatable

(mytable2,

)print

(mytable2.key1)

--value

mytable2.newkey =

"new1"

print

(mytable2.newkey,mytable1.newkey)

--nil new1

mytable2.key1 =

"new2"

print

(mytable2.key1,mytable1.key1)

--new2 nil(因為有這個鍵值)

mytable2[1]

=1print

(mytable2[2]

)

lua元表與元方法

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

Lua 元表以及元方法

例如 a 10b 20print a b 我們可以得到30,但是如果兩個table型別相加呢?a b print a b 輸出結果是 lua hello world.lua 3 attempt to perform arithmetic on global a a table value stack...

Lua元表和元表方法

今天學習lua中的元表,書上講的太難懂了,網上搜尋教程也將的模模糊糊,搜了一會總結了一下經驗,跟大家分享一下,希望對您有所幫助。如何設定元表?local t local mt getmetatable t nil setmetatable t,mt 將t1設定為t的元表 getmetatable t...