抱歉,我不确定下面的函数是做什么的,下面函数的第 2 行和第 3 行不需要在那里)。
function Test(Event)
local k = 0
if k == 0 then
Event:SetValue(k)
end
end
但是,如果我理解正确并且您想要检索“事件”的值,您应该return
这样使用..
function Test(Event)
local k = 0
if k == 0 then
Event:SetValue(k)
end
return Event;
end
但就像我说的那样,该函数将毫无用处,如下例所示:
local Event = "ham sandwich";
function Test(Event)
local k = 0
if k == 0 then
Event = k
end
return Event;
end
print(Test(Event));
0
这是因为,在您的函数中,k 始终为 0。
在写完很久之后,我又回到了这个问题上,我注意到我实际上并没有回答你的问题!
这是一个函数,它将存储 EVENT 并将 EVENT 传递给您以在最后一个“结束”之后使用。
local eventArray = {};
如果我们在此处将“eventArray”声明为本地(而不是在函数或代码块中),我们可以确信它可以在您的代码中的任何位置访问。
function GetEvent(event)
eventArray = eventArray or {};
if ( event == nil ) then
return;
else
table.insert(eventArray, event);
return event;
end
end
因为函数返回一个值,所以您可以从函数外部执行此操作:
local event1 = GetEvent(event);
'event1' 现在将保存您的函数返回的值,当然,如果需要,该函数也会将其保存在表中以供以后使用。
如果您想存储事件,请确保您的表首先存在于函数的开头,即:eventArray = eventArray 或 {};
这可以防止意外删除表。
代码说'表等于它自己,但如果它不存在,它就等于一个表。如果您的表存在,那是无害的,因为它总是接受第一个真正的语句(在这种情况下是确实存在的“eventArray”)。
确保事件存在实际上很容易。如果 event 不可能有布尔值,你也可以使用: if ( not event ) then
我这么说是因为事件可能存在值为假。如果是这种情况并且您使用了 if ( not event ),那么它将认为该语句为 true,因为 event 的值为 false。这是因为 false 和 nil 不是一回事,不像某些语言。
请记住,假和“假”也不是一回事。第一个是一个布尔值(真或假),第二个只是一个文本字符串,上面写着“假”并且被视为任何其他字符串。
但为了安全起见,“if (event == nil)”通常是最好的。
使用 return 告诉函数就停在那里,因为继续没有意义。因此,如果事件不存在,该函数将提前结束。
休