在lua中设置变量并运行代码

我正在用lua编写一个脚本,每次设置变量时都需要运行一段代码。

我现在的代码是这样的:

plane = {}
plane.status = "foo"
plane.status = "bar"

我想每次为plane中的变量赋值时都运行以下代码:

print "status=" + <value>

我该怎么做?我听说和__newindex有关。

点赞
用户107090
用户107090

是的,你为 plane 设置了一个代理表格并为它设置了一个 __newindex 元方法。

function managed(t,f)
        return setmetatable({},{__index=t, __newindex=f})
end

plane = managed({},print)
plane.status = "foo"
plane.status = "bar"

在实践中,你可以使用 rawset 在原始表格中设置值用于 __newindex 元方法。

2012-07-03 16:21:57