如何或可以将带有参数的函数作为参数传递给 lua 中的函数?
How or Can I pass a function with argument as a parameter to a function in lua?
我不是 运行 异性恋 lua 而是 CC-Tweaks ComputerCraft 版本。这是我正在努力完成的一个例子。它不能按原样工作。
*已编辑。我有一个函数要传递,但没有一个有自己的参数。
function helloworld(arg)
print(arg)
end
function frepeat(command)
for i=1,10 do
command()
end
end
frepeat(helloworld("hello"))
"repeat"是lua中的保留字。试试这个:
function helloworld()
print("hello world")
end
function frepeat(command)
for i=1,10 do
command()
end
end
frepeat(helloworld)
frepeat(helloworld("hello"))
不会像 frepeat(helloworld)
那样传递 helloworld
函数,因为它总是意味着它看起来像:调用 helloworld
一次,然后将该结果传递给 frepeat
.
您需要定义一个函数来执行您想传递给该函数的操作。但是对于一次性函数来说,一个简单的方法是函数表达式:
frepeat( function () helloworld("hello") end )
这里的表达式 function () helloworld("hello") end
产生了一个没有名字的函数,它的主体说每次调用函数时将 "hello"
传递给 helloworld
。
试试这个代码:
function helloworld(arg)
print(arg)
end
function frepeat(command,arg)
for i=1,10 do
command(arg)
end
end
frepeat(helloworld,"hello")
如果您需要多个参数,请使用 ...
而不是 arg
。
我不是 运行 异性恋 lua 而是 CC-Tweaks ComputerCraft 版本。这是我正在努力完成的一个例子。它不能按原样工作。
*已编辑。我有一个函数要传递,但没有一个有自己的参数。
function helloworld(arg)
print(arg)
end
function frepeat(command)
for i=1,10 do
command()
end
end
frepeat(helloworld("hello"))
"repeat"是lua中的保留字。试试这个:
function helloworld()
print("hello world")
end
function frepeat(command)
for i=1,10 do
command()
end
end
frepeat(helloworld)
frepeat(helloworld("hello"))
不会像 frepeat(helloworld)
那样传递 helloworld
函数,因为它总是意味着它看起来像:调用 helloworld
一次,然后将该结果传递给 frepeat
.
您需要定义一个函数来执行您想传递给该函数的操作。但是对于一次性函数来说,一个简单的方法是函数表达式:
frepeat( function () helloworld("hello") end )
这里的表达式 function () helloworld("hello") end
产生了一个没有名字的函数,它的主体说每次调用函数时将 "hello"
传递给 helloworld
。
试试这个代码:
function helloworld(arg)
print(arg)
end
function frepeat(command,arg)
for i=1,10 do
command(arg)
end
end
frepeat(helloworld,"hello")
如果您需要多个参数,请使用 ...
而不是 arg
。