- 在我的主要功能中,我进行以下调用:
function Main()
FBIVVoit(1,9,1,0)
FBIVVoit(1,9,1,1)
end
- 这是功能代码:
function FBIVVoit(numTrain, numCar, numFBIVVoit, State)
numTrainCount = 1
while numTrainCount <= numTrain do
numCarCount = 1
while numCarCount <= numCar do
FBIVVoit = dictionary.getvalue(Dict, 'SCVSStatutsV' .. numCarCount .. '.FBIVVoit')
print('SCVSStatutsV' .. numCarCount .. '.FBIVVoit'
.. ' before the change is: ' .. FBIVVoit)
f:write(string.format('\n' .. os.date() .. ' -- ' .. 'SCVSStatutsV'
.. numCarCount .. '.FBIVVoit' .. ' before the change is: ' .. FBIVVoit))
dictionary.setvalue(Dict, 'SCVSStatutsV' .. numCarCount .. '.FBIVVoit', State);
FBIVVoit = dictionary.getvalue(Dict, 'SCVSStatutsV' .. numCarCount .. '.FBIVVoit')
print('SCVSStatutsV' .. numCarCount .. '.FBIVVoit' .. ' is now: ' .. FBIVVoit)
f:write(string.format('\n' .. os.date() .. ' -- ' .. 'SCVSStatutsV'
.. numCarCount .. '.FBIVVoit' .. ' is now: ' .. FBIVVoit))
fSleep(1)
numCarCount = numCarCount + 1
end
numTrainCount = numTrainCount + 1
end
print('Run stopped at ' .. os.date());
f:write(string.format('\n' .. os.date() .. ' -- ' .. 'Run stopped'))
f:close()
end
- 当我运行Main时,第一次调用FBIVTrain函数没有问题。在第二次调用时,我收到以下错误消息:
LUA脚本中的错误:c:\ lua \ pstm_test.lua:95:尝试调用全局&#39; FBIVVoit&#39; (数值)。
- 真正让我感到困惑的是,我有很多其他函数,我连续多次调用函数,并且函数传递了不同的参数,我没有这种行为。
- 你们有没有经历过这种情况或看到我的代码看错了什么?当我被困在那里时,任何帮助都会受到欢迎。
答案 0 :(得分:4)
你在这里覆盖了这个功能:
FBIVVoit = dictionary.getvalue(Dict, 'SCVSStatutsV' .. numCarCount .. '.FBIVVoit')
结果为dictionary.getvalue()
。所以下次你试着打电话给你的功能时,它就不再存在了。
如果您确实想在函数内使用相同的变量名,请使用local
说明符。事实上,总是使用local
作为临时变量。它既快得多又不会污染全局命名空间。