在Lua中访问迭代器变量

我有一个 for 循环,正在迭代一个区间。在该循环内,我正在调用另一个 Lua 文件中的函数,我需要迭代器变量在其他 Lua 文件中可访问,但它每次都只打印 NIL,请问我需要做什么?

点赞
用户90511
用户90511

将下面翻译成中文并且保留原本的 markdown 格式

使用调用者的变量作为函数的变量可能非常脆弱,所以 Lua 并不支持这种方式。如果在另一个没有 o 变量的地方调用 SampleFuncction 会发生什么?

我会这样做,让 SampleFunction 作为参数接受循环索引:

-- main.lua

for o = 1, 5 do
  print(o)
  SampleFunction(o)
end

--in B.lua

function SampleFunction(index)
    print(index)
end
2014-06-20 20:34:51
用户180092
用户180092
对于循环,迭代器总是局部作用于循环体,但是你可以将它的值分配给任何可用的全局变量。注意,这仍然不是动态作用域——你会覆盖全局变量 `o`,这可能会干扰其他使用该名称的函数。
for i = 1, 5 do
    o = i
    SampleFunction()
end
2014-06-20 21:26:47