在for循环中使用整数计数器(i,j,k)使table name/address时如何显式调用Lua table值?
How to call Lua table value explicitly when using integer counter (i,j,k) in a for loop to make the table name/address?
老实说,我还不太了解 Lua。我正在尝试覆盖分配给一组 table 地址的本地数值(这是正确的术语吗?)。
地址类型为:
project.models.stor1.inputs.T_in.default
、project.models.stor2.inputs.T_in.default
等等 stor
数字增加。
我想在 for 循环中执行此操作,但找不到使整个字符串被 Lua 作为 table 地址接受的正确表达式(再次,我希望这是正确的术语)。
到目前为止,我尝试了以下方法来连接字符串,但没有成功调用然后覆盖值:
for k = 1,10,1 do
project.models.["stor"..k].inputs.T_in.default = 25
end
for k = 1,10,1 do
"project.models.stor"..j..".T_in.default" = 25
end
编辑:
我想我按照 https://www.lua.org/pil/2.5.html:
找到了解决方案
A common mistake for beginners is to confuse a.x with a[x]. The first form represents a["x"], that is, a table indexed by the string "x". The second form is a table indexed by the value of the variable x. See the difference:
for k = 1,10,1 do
project["models"]["stor"..k]["inputs"]["T_in"]["default"] = 25
end
你差一点。
Lua supports this representation by providing a.name as syntactic sugar for a["name"].
Read more: https://www.lua.org/pil/2.5.html
一次只能使用一种语法。
tbl.key
或 tbl["key"]
。
.
的局限在于只能在其中使用常量字符串(也是valid variable names)。
在方括号 []
中,您可以计算运行时表达式。
正确的做法:
project.models["stor"..k].inputs.T_in.default = 25
models.["stor"..k]
中的.
是不必要的,会导致错误。正确的语法只是 models["stor"..k]
.
老实说,我还不太了解 Lua。我正在尝试覆盖分配给一组 table 地址的本地数值(这是正确的术语吗?)。
地址类型为:
project.models.stor1.inputs.T_in.default
、project.models.stor2.inputs.T_in.default
等等 stor
数字增加。
我想在 for 循环中执行此操作,但找不到使整个字符串被 Lua 作为 table 地址接受的正确表达式(再次,我希望这是正确的术语)。
到目前为止,我尝试了以下方法来连接字符串,但没有成功调用然后覆盖值:
for k = 1,10,1 do
project.models.["stor"..k].inputs.T_in.default = 25
end
for k = 1,10,1 do
"project.models.stor"..j..".T_in.default" = 25
end
编辑:
我想我按照 https://www.lua.org/pil/2.5.html:
找到了解决方案A common mistake for beginners is to confuse a.x with a[x]. The first form represents a["x"], that is, a table indexed by the string "x". The second form is a table indexed by the value of the variable x. See the difference:
for k = 1,10,1 do
project["models"]["stor"..k]["inputs"]["T_in"]["default"] = 25
end
你差一点。
Lua supports this representation by providing a.name as syntactic sugar for a["name"].
Read more: https://www.lua.org/pil/2.5.html
一次只能使用一种语法。
tbl.key
或 tbl["key"]
。
.
的局限在于只能在其中使用常量字符串(也是valid variable names)。
在方括号 []
中,您可以计算运行时表达式。
正确的做法:
project.models["stor"..k].inputs.T_in.default = 25
models.["stor"..k]
中的.
是不必要的,会导致错误。正确的语法只是 models["stor"..k]
.