2

我在试图找出我想要完成的逻辑时遇到了一些麻烦。我想做的是弄清楚如何使“事件”成为自动完成的项目,将其存储-稍后检查它是否存在或拼写错误。

我正在使用 C#。

这是流畅的解释:

功能:

function Test(Event)
end

现在,我想做的是使用:

if(richTextBox1.Text.IndexOf("Event"))
{ 
    // Store item via Auto Complete Item
}

一旦存储起来,我真的不知道如何获取函数的另一部分。比如,函数的内部有多大,直到它到达一个“结束”点。

比方说,这是一个函数的更大部分:

function Test(Event)
    local k = 0
    if k == 0 then
        Event:SetValue(k)
    end
end

现在,当它位于“if”语句中时,我将如何获得“事件”?我使用“LastIndexOf”吗?

简而言之:

  • 检查“事件”是否存在。
  • 如果“事件”存在,则存储它。
  • 一旦“事件”被存储,一旦最后一个“结束”被写入,我们就可以确保“函数”内部没有错误。

示例或书面文档将不胜感激。

4

1 回答 1

1

抱歉,我不确定下面的函数是做什么的,下面函数的第 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 告诉函数就停在那里,因为继续没有意义。因此,如果事件不存在,该函数将提前结束。

于 2012-12-09T10:38:39.100 回答