【问题标题】:How to define variable that named by function?如何定义由函数命名的变量?
【发布时间】:2015-10-08 13:55:15
【问题描述】:

我需要创建许多变量,并且我想通过函数声明这些变量的名称。像这样:

function DefineVariable(VariableName)
return VariableName = 123 end

我想要的功能是:

DefineVariable(weg423)
-- Result: weg423 = 123

但这并不像我想象的那么容易......那个功能不起作用。我想知道如何把它变成工作函数。

而且,我也能收到关于这个的答案吗?

a = "blahblah"

...somehow...

DefineVarByValue(a)
-- Result: blahblah = 123

啊,还有一个问题。如何将“表变量”更改为“字符串或数字变量”? (我的意思是“预期的数字,得到表”错误......)

【问题讨论】:

    标签: lua


    【解决方案1】:

    Lua 中的所有简单类型都是按值传递的,所以你的DefineVariable 函数获取变量weg423 的当前值而不是它的名称,这意味着你不能更改weg423 的值函数。

    如果这是一个全局变量,那么您可以传递该变量的名称(例如,DefineVariable('weg423')),然后函数可以通过将其引用为键入_G_ENV 表(_G[VariableName] = whatever)。

    我仍然认为这样做没有意义。使用weg423 = 123没有任何问题。

    【讨论】:

    • 例如: 1. io.open("someCode.lua", r) 2. string.match(find "DoDeclare(...VarName...)") 3. VarName = 123 4. ??? 5.利润! // 这就是我现在正在尝试的。所以我想我需要那个功能
    • 我就是想解决这个问题(stackoverflow.com/questions/32923823)
    • 我的意思是,我想通过io的东西在文件中找到所有字符串“Portal(...VarName...)”,然后声明所有创建的VarNames。我猜这不是那么好,但至少它可以解决这个问题的问题。这两个答案并没有解决真正的问题。唯一解决的是关于 print() 代码。但从技术上讲,当您打印 a 时,b 已经被声明了。所以……是的。就是这样。
    • 您不能真正用动态名称“声明”变量,也不需要这样做。您引用的 SO 问题提供了几个答案,所以除了那里已经回答的内容之外,我不确定您还需要什么。您到底想对从文件中获取的那些变量做什么?
    • ...哇。我只是找到一个答案。它就在你的问题中。 (_G[VariableName] = 不管)这个。大声笑我想'这是什么鬼? w/e 它必须是一些我直到现在都无法理解的高级功能。非常感谢。如果你只是把它写成函数形式...... :)
    猜你喜欢
    • 2017-06-14
    • 2017-11-14
    • 2013-01-02
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2012-10-27
    相关资源
    最近更新 更多