在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.defaultproject.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.keytbl["key"]

.的局限在于只能在其中使用常量字符串(也是valid variable names)。

在方括号 [] 中,您可以计算运行时表达式。

正确的做法:

project.models["stor"..k].inputs.T_in.default = 25

models.["stor"..k]中的.是不必要的,会导致错误。正确的语法只是 models["stor"..k].