lua中的元表和元方法

元表概念:
引言:Lua中的每个值都有一套预定义的操作集合,如数字相加等。但无法将两个table相加,此时可通过元表修改一个值的行为,使其在面对一个非预定义的操作时执行一个指定操作。

访问机制:一般的元方法都只针对Lua的核心,也就是一个虚拟机。它会检测一个操作中的值是否有元表,这些元表是否定义了关于次操作的元方法。例如两个table相加,先检查两者之一是否有元表,之后检查是否有一个叫“__add”的字段,若找到,则调用对应的值。“__add”等即时字段,其对应的值(往往是一个函数或是table)就是“元方法”。

eg:

--定义元组
tab = {}
function String( str )
    --增加元组方法value为返回参数字符串
    return setmetatable( {value = str or ''}, tab )
end
function tab.__add( a, b )
    --定义元组方法add为返回两元组联合
    return String( a.value..b.value )
end

m = String( "hello " )
n = String( "world!" )
print( (m+n).value )


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页