【问题标题】:How do I properly reassign variables in Lua?如何在 Lua 中正确地重新分配变量?
【发布时间】:2015-10-11 00:14:43
【问题描述】:

我正在为模拟软件编写用户程序。有一个名为 adj_elect05 的变量。以下代码块被一遍又一遍地调用。每次调用它时,我都希望将 adj_elect05 (具有数值)增加一定数量,然后将该数量写入文件。这是有效的代码:

increment = -10

adj_elect05 = adj_elect05 + increment

oct_voltages = io.open(O_V, "a+")
oct_voltages:write("\n", adj_elect05) 
oct_voltages:close ()

在文件中,我得到一个数字列表:-10、-20、-30 等等。问题是我需要给 adj_elect05 一个通用名称,以便以后可以更改它而不必更改它显示的每个实例,所以我写道:

increment = -10
octupole_v = adj_elect05

octupole_v = octupole_v + increment

oct_voltages = io.open(O_V, "a+")
oct_voltages:write("\n", octupole_v) 
oct_voltages:close ()

这样,每次代码运行时,我都会将 -10 写入文件,而不是每次都减少 10。我究竟做错了什么?

【问题讨论】:

  • 该代码是否在循环/函数中?您是否每次都在循环/函数中从adj_elect05 分配?因为你永远不会改变adj_elect05,所以如果你每次通过循环/函数(在第二个sn-p中)从adj_elect05分配给octupole_v,你每次都撤消你的增量修改。
  • 它在一个函数中。那么有没有办法重命名adj_elect05?由于 octupole_v 在第一个循环中被更改,然后在第二个循环中分配给 adj_elect05,我希望 adj_elect05 会增加。
  • octupole_v 不是对adj_elect05 变量的引用。它是一个自变量,被赋予相同的值。对octupole_v 的更改不会更改adj_elect05。以a=5; b=a; print(a); print(b); b="foo"; print(a); print(b) 为例。
  • 哦,我明白了。这就说得通了。那么有没有办法创建对 adj_elect05 的引用?
  • 不是,不是。您可以使用表并更新其字段,也可以在最后分配回全局变量,或者根本不能使用单独的变量。

标签: variables lua variable-assignment


【解决方案1】:

你需要的是使用局部变量:

local increment = -10
local octupole_v = adj_elect05
octupole_v = octupole_v + increment

默认情况下,变量被视为全局变量(与 Python 不同)。

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多