2012-10-08 2 views
2

나는 달성하려는 논리에서 논리를 파악하는 데 어려움을 겪고 있습니다. 내가하려고하는 일은 어떻게 '이벤트'를 자동으로 완성 된 아이템으로 만들 수 있는지, 저장하고 나중에 그것이 존재하는지 또는 철자가 틀린지를 확인하는 것입니다.RichTextBox에서 함수 내에서 IndexOf 사용

저는 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 

? 'LastIndexOf'를 사용합니까? 짧은

: '이벤트'가 존재하는 경우

  • 확인 확인합니다.
  • '이벤트'가있는 경우 저장하십시오.
  • 일단 '이벤트'가 저장되면 마지막 '끝'이 기록 된 후에 '함수'내부에 오류가 없는지 확인할 수 있습니다.

예제 또는 서면 문서는 크게 감사하겠습니다.

+0

이 당신이 배열에 항목을 추가 할 수 여부를하지만 왜 먼저 배열을 생성하지 않으며 매번이 기능 (테스트 (이벤트))를 실행할 수 있는지 확실하지? –

+0

나는 오해가있을 수 있지만 '이벤트'라는 단어의 모든 인스턴스를 얻으려고합니까? – keyboardP

+0

예, 저는 'function'이라는 단어 안에 Event라는 단어를 얻으려고합니다. 그리고 마지막 'end'가 배포되면 멈 춥니 다. @ Picrofo : 실제로 목록을 시도했지만, 일단 'end'가 함수를 끝내면 어떻게 멈추는 지 알 수 없습니다. 'if'문을 사용하는 경우 여러 끝이 있기 때문입니다. – user1729639

답변

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를 전달하는 함수입니다. 우리가 여기에 로컬로 '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)"이 가장 좋은 경우가 많습니다.

리턴을 사용하면 계속할 지점이 없기 때문에 함수가 바로 멈추도록 지시합니다. 따라서 이벤트가 존재하지 않으면 함수는 조기에 종료됩니다.