我正在寻求有关此事的帮助,因为如果我做错了,我就无法理解是否可能更不用说了。
my = {
Question = AskQuestion()
}
function AskQuestion()
return "What do you want to know?"
end
我的目的是做,打印(my.Question)并让它返回“你想知道什么?”,到目前为止,我遇到了令人头疼的错误,试图让它发挥作用。
如果这个问题得到解决,我可以假设而不是自己搞清楚,我也可以另外问一下。如何将值传递给函数。
my = {
Answer = MyAnswer(vAnswer)
}
function MyAnswer(vAnswer)
if vAnswer == "42" then return "Life.." end
end
所以我想做,打印(my.Answer(42))然后返回“Life ..”
答案 0 :(得分:3)
请忽略您的声明:
function AskQuestion()
return "What do you want to know?"
end
my = {
Question = AskQuestion()
}
由于Lua被解释,你必须在使用之前定义所有内容。
设置变量时,您不需要传递(vAnswer),因为它不是一个定义,它只是一个现有函数用法,因此更改为:
function MyAnswer(vAnswer)
if vAnswer == "42" then return "Life.." end
end
my = {
Answer = MyAnswer
}
我在这里假设您正在使用不同的my
表,但是您应该了解它。
答案 1 :(得分:0)
函数是Lua中的第一类实体,因此您可以将变量或表字段设置为函数:
function f() end -- do nothing
a = f
然后a指的是f,你可以用f做f /,如调用它:
a() -- calls f()
然后你可以将a设置为另一个函数,并调用它:
function g(x) end
a = g -- a is now function g
a(1) -- calls g(1)
以上示例中的所有内容也可以使用表字段完成:
tt = {
f = function() print('hi') end,
g = function(x) print(x) end
}
tt.f() -- calls tt.f function
a = tt.f
a() -- calls tt.f
tt.h = a
tt.h() -- calls tt.f
tt.f = print -- now tt.f is print function
tt.f('bye') -- prints 'bye'