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...