Lua元表的定義和使用

2021-08-11 12:54:43 字數 980 閱讀 4542

lua元表的定義和使用

在lua table中我們可以訪問對應的

key來得到

value

值,但是卻無法對兩個

table

進行操作。

因此lua提供了元表(

metatable

),允許我們改變

table

的行為,每個行為關聯了對應的元方法。例如,使用元表我們可以定義

lua如何計算兩個

table

的相加操作

a+b。

當lua試圖對兩個表進行相加時,先檢查兩者之一是否有元素,之後檢查是否有乙個叫」__add」的字段,若找到,則呼叫對應的值。」__add」等即時字段,其對應的值(往往是乙個函式或是table)就是」元方法」。

我的理解就是元表對普通表做了乙個行為的擴充套件,元表的話可以定義一些操作,比如說:這個表跟別的表進行加法操作,訪問不存在的索引的這個表的操作,輸出這個表的操作等。

跟元表有關的兩個重要函式:

①setmetatable

(table,metatable)(

只能用用於

table

,如果元表(

metatable

)中存在

__metatable

鍵值,setmetatable

會失敗)

②getmetatable(table)(

用於任何物件,如果元表(

metatable

)中存在

__metatable

鍵,則返回

__metatable

的值)

輸出結果

Lua元表和元表方法

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

Lua筆記 表和元表

當有乙個表為a 我們讓b a,則b指向和a相同的表的記憶體 我們修改b 1 則a 1 也變了 我們令a nil,則僅僅是說a指向空 但那個表還在,故b仍然可用。當b nil時,則已經找不到這個表了 但是其記憶體依然占用著 因為已經無變數指向,故該記憶體屬於洩露記憶體 可以用collectgarbag...

lua中的元表和元方法

元表概念 lua中,物件導向是用元表這種機制來實現的 元表 matatable lua在建立新的table時不會建立元表,比如以下 就可以演示 local t print getmetatable t nil設定元表和獲取元表 getmetatable和setmetatable 使用getmetat...