您的位置:首页 > 编程语言 > Lua

lua中的元表和元方法

2020-02-03 20:57 127 查看

元表概念:
引言: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 )


  • 点赞
  • 收藏
  • 分享
  • 文章举报
zfj1986 发布了13 篇原创文章 · 获赞 0 · 访问量 2万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: