2

我正在就此事寻求帮助,因为我无法完全掌握是否有可能,更不用说我做错了。

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

所以在这里我想做, print(my.Answer(42)) 并返回“Life..”

4

2 回答 2

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表,但您应该得到图片。

于 2013-12-15T19:17:03.767 回答
0

函数是 Lua 中的第一类实体,因此您可以将变量或表字段设置为函数:

function f() end -- do nothing
a = f

然后 a 指代 f,你可以对 f 做 to/with 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'
于 2013-12-15T22:38:52.557 回答