죄송합니다. 아래 기능의 행 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를 전달하는 함수입니다. 우리가 여기에 로컬로 'eventArray'를 선언하는 경우
local 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'입니다).
실제로 이벤트가 존재하는지 확인하는 것은 쉽습니다. 이벤트가 부울 값을 가질 수 없다면 다음과 같이 사용할 수도 있습니다. if (not event) then
이벤트는 값이 false 일 수 있으므로 말할 수 있습니다. 그럴 경우 이벤트 값이 false이기 때문에 if (not event)를 사용하면 true로 간주됩니다. 이것은 일부 언어와 달리 false와 nil이 같은 것이 아니기 때문입니다.
거짓과 "거짓"은 같은 것이 아닙니다. 첫 번째는 부울 값 (true 또는 false)이고 두 번째는 "false"라는 텍스트 문자열이며 다른 문자열처럼 취급됩니다.
하지만 안전하려면 "if (event == nil)"이 가장 좋은 경우가 많습니다.
리턴을 사용하면 계속할 지점이 없기 때문에 함수가 바로 멈추도록 지시합니다. 따라서 이벤트가 존재하지 않으면 함수는 조기에 종료됩니다.
휴
이 당신이 배열에 항목을 추가 할 수 여부를하지만 왜 먼저 배열을 생성하지 않으며 매번이 기능 (테스트 (이벤트))를 실행할 수 있는지 확실하지? –
나는 오해가있을 수 있지만 '이벤트'라는 단어의 모든 인스턴스를 얻으려고합니까? – keyboardP
예, 저는 'function'이라는 단어 안에 Event라는 단어를 얻으려고합니다. 그리고 마지막 'end'가 배포되면 멈 춥니 다. @ Picrofo : 실제로 목록을 시도했지만, 일단 'end'가 함수를 끝내면 어떻게 멈추는 지 알 수 없습니다. 'if'문을 사용하는 경우 여러 끝이 있기 때문입니다. – user1729639