不,这个做法很糟糕~于是,体贴的Lua又给我们提供了这样的调用方式,如下代码:通过rawget函数可以忽略元表的__index功效,纯粹地从t1中调用字段。rawget的第一个参数是要调用的table,第二个参数是table的字段名。因此,通过rawget调用t1的name字段,只能返回nil,而调用hehe字段,则能正确取得值。同样的是,rawset函数可以忽略元表的__newindex功效,纯粹地给t1赋值。来看看输出结果:这就相当于t1并不存在__index和__newindex元方法了。b.元表里还增加了__newindex,用来阻止不存在字段的赋值操作。虽然days中不存在2这个字段,但是可以通过__index找到这个字段。
暂无评论