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就可以解决这个问题。希望我不会偶然发现任何其他让我们都感到悲伤的事情:)