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 または {};

これにより、テーブルが誤って削除されるのを防ぐことができます。

コードは、「テーブルはそれ自体と等しいが、存在しない場合はテーブルと等しい」と述べています。テーブルは常に最初の true ステートメント (この場合は存在する 'eventArray') を受け入れるため、テーブルが存在しても無害です。

イベントが存在することを確認するのは実際には簡単です。event がブール値を持つことが不可能な場合は、次を使用することもできます: if ( not event ) then

イベントが値 false で存在する可能性があるためです。その場合、 if ( not event ) を使用すると、 event の値が false であるため、そのステートメントは true と見なされます。これは、一部の言語とは異なり、 false と nil が同じものではないためです。

false と「false」も同じではないことに注意してください。1 つ目はブール値 (true または false) で、2 つ目は "false" というテキストの文字列で、他の文字列と同様に扱われます。

しかし安全のために、「if ( event == nil )」がベストな場合が多いです。

return を使用すると、続行しても意味がないため、その場で停止するように関数に指示します。したがって、イベントが存在しない場合、関数は途中で終了します。

ヒュー

于 2012-12-09T10:38:39.100 に答える