gpt4 book ai didi

c++ - 从 Lua 设置 C 属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:40 25 4
gpt4 key购买 nike

我想从 Lua 更新 C 中的一些值,并且我已经编写了自己的绑定(bind)函数,但我想知道是否有可能。

我希望能够做到这一点

myNamespace.myValue = 10

让它做同样的事情

myNamespace.setMyValue(10)

可能吗?主要是好奇。直接分配/读取值而不是调用 get/set 函数更简洁。 Lua 能做这样的自动翻译吗?

最佳答案

这当然是可能的。您可以重载 __newindex 元方法以将 myValue 转换为 setMyValue,然后在表上调用它。一个例子:

local meta = {
__newindex = function(t, key, value)
local setterName = "set" .. key:sub(0, 1):upper() .. key:sub(2)
local setter = t[setterName]
if setter == nil then
error("Setter " .. setterName .. " does not exist on table")
end

return setter(t, value)
end
}

local table = {
setMyValue = function(self, v)
print("Set value to " .. tostring(v))
end
}
setmetatable(table, meta)

table.myValue = "Hello"

这将打印“Set value to Hello”。

您可能想要重载 __index 来执行相同的操作,但同时使用 getMyValue

关于c++ - 从 Lua 设置 C 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com