Lua-可以从表值调用函数并返回其值吗
关于这件事,我正在寻求帮助,因为我不太清楚这是否可能,更不用说我做错了Lua-可以从表值调用函数并返回其值吗,lua,function-declaration,Lua,Function Declaration,关于这件事,我正在寻求帮助,因为我不太清楚这是否可能,更不用说我做错了 my = { Question = AskQuestion() } function AskQuestion() return "What do you want to know?" end 我的目的是做,打印(我的问题),并让它返回“你想知道什么?”到目前为止,我只是遇到了头痛和错误,试图让这个工作 进一步说,如果这个问题得到解决,我可以假设,而不是自己去弄清楚,我还可以另外问一下。将值传递给函数怎么样
my = {
Question = AskQuestion()
}
function AskQuestion()
return "What do you want to know?"
end
我的目的是做,打印(我的问题),并让它返回“你想知道什么?”到目前为止,我只是遇到了头痛和错误,试图让这个工作
进一步说,如果这个问题得到解决,我可以假设,而不是自己去弄清楚,我还可以另外问一下。将值传递给函数怎么样
my = {
Answer = MyAnswer(vAnswer)
}
function MyAnswer(vAnswer)
if vAnswer == "42" then return "Life.." end
end
所以在这里我想做的是,打印(my.Answer(42))并返回“Life..”只要颠倒你的声明:
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
表,但您应该了解情况。函数是Lua中的第一类实体,因此您可以将变量或表字段设置为函数:
function f() end -- do nothing
a = f
那么a指的是f,你可以像对f一样对a进行操作,比如调用它:
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'
谢谢你,真不敢相信事情竟如此简单。现在尝试解决第二个问题,将值传递给表中的该函数。继续获取布尔错误>@Crazyc精算师对不起,没有看到第二部分,我刚刚编辑了答案,好吗?再次感谢!这件事真让我抓狂。只需将MyAnswer修改为MyAnswer就可以解决这个问题。希望我不会偶然发现任何其他让我们都感到悲伤的事情:)