尝试两次传递不同的参数调用相同的函数

时间:2014-04-14 19:03:00

标签: lua

- 在我的主要功能中,我进行以下调用:

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; (数值)。

- 真正让我感到困惑的是,我有很多其他函数,我连续多次调用函数,并且函数传递了不同的参数,我没有这种行为。

- 你们有没有经历过这种情况或看到我的代码看错了什么?当我被困在那里时,任何帮助都会受到欢迎。

1 个答案:

答案 0 :(得分:4)

你在这里覆盖了这个功能:

FBIVVoit = dictionary.getvalue(Dict, 'SCVSStatutsV' .. numCarCount .. '.FBIVVoit')

结果为dictionary.getvalue()。所以下次你试着打电话给你的功能时,它就不再存在了。

如果您确实想在函数内使用相同的变量名,请使用local说明符。事实上,总是使用local作为临时变量。它既快得多又不会污染全局命名空间。