申し訳ありませんが、以下の関数の意図がよくわかりません。また、以下の関数の 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 を使用すると、続行しても意味がないため、その場で停止するように関数に指示します。したがって、イベントが存在しない場合、関数は途中で終了します。
ヒュー