Lua知识点_基础_rawset

本文详细介绍了Lua中的rawset函数及其在元表中的应用。通过实例展示了__index和__newindex元方法的工作原理,解释了rawset如何绕过元表的重写行为,以及在防止无限递归死循环中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1.概述
rawset


2.实例
test.lua-----------------------
Window = {}


Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,}


Window.mt = {}


function Window.new(o)
setmetatable(o ,Window.mt)
return o
end


Window.mt.__index = Window.prototype


Window.mt.__newindex = function (table ,key ,value)
if key == "wangbin" then
rawset(table ,"wangbin" ,"yes,i am")
end
end


w = Window.new{x = 10 ,y = 20}
w.wangbin = "55"
print(w.wangbin)


然后,我们可以看到打印信息是:yes,i am
原本赋值的地方是w.wangbin = "55",但是结果却是 yes,i am。
这里就改变了元表的行为模式。


3.分析
3.1.
__index是当我们访问一个表中的元素不存在时,则会触发去寻找__index元方法,如果不存在,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值