Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法确定一个索引调用是Lua中链中的最后一个? 我正在研究Lua与C++的集成。我希望能够以一种分层的方式将C++值暴露给Lua,而这种方式可能不是C++中存储值的确切方式。我想做一些像这样的事情 a.b.c = 5 print(a.b.c) 和C++侧的A函数将接收第一个情况的A、B、C,第二个情况下只接收A’、B’、C’。为此,我创建了一个包含键的表和一个元表,其\uuuuu index和\uuuu newindex方法负责逻辑,现在它看起来像这样: metatable.__index = function(t, k) rawset(t, t.index, k) t.index = t.index + 1 return t end metatable.__newindex = function(t, k, v) rawset(t, t.index, k) return newindexCallback(t, v) end_Lua - Fatal编程技术网

有没有办法确定一个索引调用是Lua中链中的最后一个? 我正在研究Lua与C++的集成。我希望能够以一种分层的方式将C++值暴露给Lua,而这种方式可能不是C++中存储值的确切方式。我想做一些像这样的事情 a.b.c = 5 print(a.b.c) 和C++侧的A函数将接收第一个情况的A、B、C,第二个情况下只接收A’、B’、C’。为此,我创建了一个包含键的表和一个元表,其\uuuuu index和\uuuu newindex方法负责逻辑,现在它看起来像这样: metatable.__index = function(t, k) rawset(t, t.index, k) t.index = t.index + 1 return t end metatable.__newindex = function(t, k, v) rawset(t, t.index, k) return newindexCallback(t, v) end

有没有办法确定一个索引调用是Lua中链中的最后一个? 我正在研究Lua与C++的集成。我希望能够以一种分层的方式将C++值暴露给Lua,而这种方式可能不是C++中存储值的确切方式。我想做一些像这样的事情 a.b.c = 5 print(a.b.c) 和C++侧的A函数将接收第一个情况的A、B、C,第二个情况下只接收A’、B’、C’。为此,我创建了一个包含键的表和一个元表,其\uuuuu index和\uuuu newindex方法负责逻辑,现在它看起来像这样: metatable.__index = function(t, k) rawset(t, t.index, k) t.index = t.index + 1 return t end metatable.__newindex = function(t, k, v) rawset(t, t.index, k) return newindexCallback(t, v) end,lua,Lua,这对于设置值很有效,但获取值不起作用,因为a.b.c生成的结果是表格,而不是实际值。有没有办法让\u index方法知道它是链中的最后一个?或者在实际使用值时调用的另一个元方法?或者我必须使用getter和setter吗?对象a知道它的层次深度吗?理想情况下,它不知道。您可以通过实现函数is_complete()并在元方法中使用它来解决问题是否完整(a)=false,是否完整(a,“b”)==false,是否完整(a,“b”,“c”)==true

这对于设置值很有效,但获取值不起作用,因为
a.b.c
生成的结果是表格,而不是实际值。有没有办法让
\u index
方法知道它是链中的最后一个?或者在实际使用值时调用的另一个元方法?或者我必须使用getter和setter吗?

对象
a
知道它的层次深度吗?理想情况下,它不知道。您可以通过实现函数
is_complete()
并在元方法中使用它来解决问题<代码>是否完整(a)=false,
是否完整(a,“b”)==false
是否完整(a,“b”,“c”)==true