Извините, я не уверен, для чего предназначена функция, приведенная ниже, и строки 2 и 3 функции ниже не должны быть там).
function Test(Event)
local k = 0
if k == 0 then
Event:SetValue(k)
end
end
Но если я правильно понимаю вас и ваше желание получить значение 'Event', вы должны использовать 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.
Я вернулся к этому спустя много времени после того, как написал это, и заметил, что на самом деле я не ответил на ваш вопрос !.
Вот функция, которая сохранит СОБЫТИЕ и передаст СОБЫТИЕ вам для использования после последнего «конца».
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», который действительно существует).
Убедиться в том, что событие существует, на самом деле просто. Если событие не может иметь логическое значение, вы также можете использовать: if (not event) then
Я говорю это, потому что событие может существовать со значением false. Если бы это было так, и вы использовали if (not event), тогда он будет рассматривать это утверждение как истинное, потому что значение события ложно. Это потому, что false и nil - это не одно и то же, в отличие от некоторых языков.
Имейте в виду, что ложь и ложь - это не одно и то же. Первое - это логическое значение (истина или ложь), а второе - это просто строка текста, в которой написано «ложь» и обрабатывается как любая другая строка.
Но на всякий случай лучше всего использовать if (event == nil).
Использование return говорит функции просто остановиться прямо здесь, потому что нет смысла продолжать. Поэтому, если событие не существует, функция завершится преждевременно.
Хью
person
Hugh
schedule
09.12.2012
Event
? - person keyboardP   schedule 08.10.2012