如果__index 方法是一个table,则重复1、2、3. 如果__index 方法是一个函数,则返回该函数的值 1--如果键值不存在则返回 02mtb =setmetatable({},{__index=function(mtable,key)3return04end5}) --获取指定键的值,如果不存在该键则创建改建并赋给默认值0mtb =setmetatable({},{__index=function(mtable,...
【Lua __index元方法】 当你通过键来访问 table 的时候,如果这个键没有值,那么Lua就会寻找该table的metatable(假定有metatable)中的__index 键。如果__index包含一个表格,Lua会在表格中查找相应的键。 如果__index包含一个函数的话,Lua就会调用那个函数,table和键会作为参数传递给函数。 __index 元方法查看表中...
51CTO博客已为您找到关于lua中_index和_newindex的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及lua中_index和_newindex问答内容。更多lua中_index和_newindex相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
我们给table设置了一个自定义的元表,元表的_index元方法使用了我们的函数。 运行结果如下: [LUA-print] 虽然你调用了我不存在的字段,不过没关系,我能探测出来:money [LUA-print] nil 当调用了不存在的money字段时,就会调用table元表里的_index元方法,并且会传递table和字段名两个参数。于是,我们就可以在这个函...
lua __index 前言 这篇博文将通过几个简单的实例演示,巩固对__index和__newindex的理解,同时加深对Lua中元表和元方法的理解,如果对Lua的元表和元方法还不是很熟悉的话,请参考这篇文章:《Lua中的元表与元方法》。 具有默认值的table 我们都知道,table中的任何字段的默认值都是nil,但是通过元表,我们可以很...
`__index` 元方法常见有两种形式:形式一:`__index` 为表。当 `__index` 是一个表时,Lua会在这个表中查找不存在的键。这在实现继承或者设置默认值方面很实用。示例如下:首先创建一个基类:BaseClass = { value = 10.} 接着创建一个子类,让子类继承自 `BaseClass`:SubClass = {}.然后为子类设置元...
在Lua中,元方法__index和__newindex可以用来重载表的访问操作。具体作用如下:1. __index元方法:当访问一个表中不存在的键时,如果该表定义了元方法__index,Lua会调...
__index、__newindex的用法说明见菜鸟教程 tbA = { name = "a", age = 8 } tbA.__index = tbA tbB = {} tbB = setmetatable(tbB, tbA) function tbB:SetName(name) self.name = name end function tbB:Show() print(self.name) self:SetName("b") print(self.name) self:SetName(nil) prin...
>t=setmetatable({},{__index=other}) >t.foo 3 >t.bar nil 如果__index包含一个函数的话,Lua就会调用那个函数,table和键会作为参数传递给函数。 __index 元方法查看表中元素是否存在,如果不存在,返回结果为 nil;如果存在则由 __index 返回结果。
结合上述的几个小例子,我们再来解释一下__index元方法的含义:在上面的例子中,当访问son.prop1时,son中是没有prop1这个成员的。接着Lua解释器发现son设置了元表:father,(需要注意的是:此时Lua并不是直接在fahter中找到名为prop1的成员,而是先调用father的__index方法),如果__index方法为nil,则直接返回nil。如果...