在 Lua 表中实现后备/默认 getter
有没有办法实现类似python的__getitem__
的机制?
例如,具有以下内容:
local t1 = {a=1, b=2, c=3, d=4}
如果在代码中,将调用 t1.e
,那么我希望返回其他内容而不是 nil
Is there a way to implement a mechanism similar to python's __getitem__
?
for instance, having the following:
local t1 = {a=1, b=2, c=3, d=4}
if in code, t1.e
will be called, then I wish to have something else returned rather than nil
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
setmetatable
和__index
元方法:请注意,当您执行
t.nonexistant = Something
时,不会调用此方法。为此,您需要 __newindex 元方法:You can use
setmetatable
and the__index
metamethod:Note that this will not be called when you do
t.nonexistant = something
. For that, you need the__newindex
metamethod: