我在 Lua 中有以下代码: 美国广播公司:
test (X)
测试功能是用C++实现的。我的问题是:我需要知道作为参数传递的变量名是什么(在本例中为 X)。在C++中只能访问这个变量的值,但我必须知道她的名字。
请帮忙
最佳答案
函数不是传递变量;他们被传递值。变量只是存储值的位置。
当你在 Lua 代码中的某处说 X
时,这意味着从变量 X
中获取 value (注意:它实际上更比这更复杂,但我不会在这里讨论)。
所以当你说 test(X)
时,你是在说,“从变量 X
中获取值并将该值作为第一个参数传递给函数测试
。”
您似乎想做的是更改 X
的内容,对吧?您想让 test
函数以某种方式修改 X
。好吧,你不能直接在 Lua 中这样做。你也不应该。
看,在 Lua 中,您可以从函数返回值。您可以返回多个 值。即使在 C++ 代码中,您也可以返回多个值。因此,无论您想在 X
中存储什么,都可以返回:
X = test(X)
这样,函数的调用者决定如何处理值,而不是函数本身。如果调用者想要修改变量,那很好。如果调用者想把它贴在其他地方,那也很好。您的函数不应该关心一种方式或另一种方式。
另外,这允许用户执行类似test(5)
的操作。在这里, 没有变量;您只需直接传递一个值。这就是为什么函数不能修改传递的“变量”的原因之一;因为它不一定是一个变量。仅传递值,因此用户可以简单地传递文字值而不是存储在变量中的值。
简而言之:您不能这样做,也不应该这样做。
关于c++ - 命名变量 Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932852/