这是一个奇怪的问题,因为我不太确定如何提问,但这就是问题所在:
BeforeTime = os.clock()
function NewFunction( Name, Value )
Name = function()
return Value
end
end
NewFunction( RunningTime, (os.clock()-BeforeTime) )
while true do
print(RunningTime()) -- will always return same value, i want the updated
end
上面的示例并不完全是我的上下文,但它是解释我的问题的最简单方法。
我想我可以要求参数' Value'需要成为一种功能,但还有另一种方式吗?
答案 0 :(得分:1)
NewFunction
创建一个函数并将其分配给Name参数。但是,在Lua中,实际参数传递by value(如Java和C),形式参数实际上是局部变量。永远不会使用赋值,也不能在函数外部使用。
要使函数返回非空值列表,请使用return
语句。
以下是计时器的类似功能:
local function CreateTimer()
local BeforeTime = os.clock()
return function()
return os.clock() - BeforeTime
end
end
你可以像这样使用它:
local RunningTime = CreateTimer()
while true do
print(RunningTime())
end
答案 1 :(得分:0)
您的代码无法运行,因为NewFunction
没有做您认为应该做的事情。
如果在循环之前添加下面的行,那么它可以正常工作。
RunningTime = function() return (os.clock()-BeforeTime) end