只是瞎搞在computercraft,试图用一个函数作为参数,但不能让它的工作使用函数作为变量,LUA
bla = function() print("bla") end
execfunc = function(func) func() end
execfunc(bla())
我想做些事情由上述可见,但随着工作的代码而不是这个废话
只是瞎搞在computercraft,试图用一个函数作为参数,但不能让它的工作使用函数作为变量,LUA
bla = function() print("bla") end
execfunc = function(func) func() end
execfunc(bla())
我想做些事情由上述可见,但随着工作的代码而不是这个废话
从参数中删除()
到execfunc
。您想通过bla
至execfunc
而不是致电bla()
的结果。
> bla = function() return "bla" end
> execfunc = function(func) print(type(func)) end
> execfunc(bla())
string
> execfunc(bla)
function
你这样做是正确的形式参数方面:使用函数调用操作()
上表达func
。如果表达式的值实际上是一个函数,它将被调用;如果不是,Lua会抛出一个错误。
在实际的论证方面,你有一个错误。要传递参数,只需在参数列表中添加一个表达式即可。您想要将变量bla
中的值传递到execfunc(bla)
。表达式只是一个变量,而变量中的值是一个函数值,这一事实不会改变任何事实。
Lua变量是动态类型的。编译器不会跟踪哪些变量在使用之前会被最后赋予函数值。事实上,它不能。你可以写一个函数,有时会返回一个函数,有时会返回一个数字。无论哪种情况,您仍然可以尝试调用结果。
local f = function()
if Wednesday then
return 7
else
return function (n) return n + 1 end
end
end
local g = f()
g() -- is the value in g a function or not? It doesn't matter to the compiler.
,你得到你的函数原料,而不调用它的方式是不使用括号()
local function a()
print("AAA")
end
local function b(func)
func()
end
b(a)
-- Output:
-- AAA
,并为您的情况:
...
execfunc(bla)
-- Everything was fine except the parenthesis for your function (bla)
很长一段时间了,不过,谢谢你非常,这有帮助 – user3837761 2014-10-16 18:32:31