주요 콘텐츠

상태 동작을 결합하여 중복 코드 제거하기

동일한 상태의 같은 태스크를 실행하는 entry, during, exit 동작을 결합할 수 있습니다.

동일한 태스크를 실행하는 상태 동작을 결합하여 중복 코드를 제거합니다. 예를 들면 다음과 같습니다.

분리된 동작결합된 형태의 동등한 동작

entry:
  y = 0;
  y=y+1;
during: y=y+1;

entry: y = 0;
entry, during: y=y+1;

en: 
  fcn1();
  fcn2();
du: fcn1();
ex: fcn1();

en, du, ex: fcn1();
en: fcn2();

이러한 방식으로 상태 동작을 결합하면 동일한 차트 실행 동작(의미 체계)이 생성되고 동등한 개별 동작과 동일한 코드가 생성됩니다.

상태 동작을 결합하는 방법

쉼표로 구분된 목록과 동일한 태스크를 수행하는 일련의 entry, during 및/또는 exit 동작을 하나의 상태로 결합합니다. 구문은 다음과 같습니다.

entry, during, exit: task1; task2;...taskN;

다음과 같은 동등한 약어를 사용할 수도 있습니다.

en, du, ex: task1; task2;...taskN;

유효한 조합

3개 동작의 모든 조합을 사용할 수 있습니다. 예를 들어, 다음 조합은 유효합니다.

  • en, du:

  • en, ex:

  • du, ex:

  • en, du, ex:

쉼표로 구분된 목록에서 모든 순서로 동작을 결합할 수 있습니다. 예를 들어, en, du:du, en:과 같은 결과를 제공합니다.

유효하지 않은 조합

유형이 동일한 2개 이상의 동작을 결합할 수 없습니다. 예를 들어, 다음 조합은 유효하지 않습니다.

  • en, en:

  • ex, en, ex:

  • du, du, ex:

유형이 동일한 여러 동작을 결합하는 경우 차트에서 해당 동작이 한 번만 실행된다는 경고를 받습니다.

결합된 동작의 실행 순서

상태는 개별 동작을 실행할 때와 동일한 순서로 결합된 동작을 실행합니다.

  1. Entry 동작이 우선 실행됨, 상태에 표시된 순서대로 위쪽에서 아래쪽으로

  2. During 동작이 두 번째로 실행됨, 위쪽에서 아래쪽으로

  3. Exit 동작이 마지막으로 실행됨, 위쪽에서 아래쪽으로

동작을 결합하는 순서는 상태 실행 동작에 영향을 미치지 않습니다. 예를 들면 다음과 같습니다.

결합된 동작실행 순서

Entry action y = 0 followed by combined entry and during action y = y+1.

  1. en: y = 0;

  2. en: y = y+1;

  3. du: y = y+1;

Combined entry and during action y = y+1 followed by entry action y = 0.

  1. en: y = y+1;

  2. en: y = 0;

  3. du: y = y+1;

Combined during and entry action y = y+1 followed by entry action y = 0.

  1. en: y = y+1;

  2. en: y = 0;

  3. du: y = y+1;

Combined during and entry action y = y+1 followed by combined entry and exit action y = 10.

  1. en: y = y+1;

  2. en: y = 10;

  3. du: y = y+1;

  4. ex: y = 10;

결합된 상태 동작의 규칙

  • 유형이 동일한 여러 동작을 결합하지 마십시오.

  • 동작 키워드(entry, en, during, du, exit, ex)와 이름이 같은 데이터, 이벤트 또는 메시지를 생성하지 마십시오.

참고 항목

도움말 항목