상태 동작을 결합하여 중복 코드 제거하기
동일한 상태의 같은 태스크를 실행하는 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:
유형이 동일한 여러 동작을 결합하는 경우 차트에서 해당 동작이 한 번만 실행된다는 경고를 받습니다.
결합된 동작의 실행 순서
상태는 개별 동작을 실행할 때와 동일한 순서로 결합된 동작을 실행합니다.
Entry동작이 우선 실행됨, 상태에 표시된 순서대로 위쪽에서 아래쪽으로During동작이 두 번째로 실행됨, 위쪽에서 아래쪽으로Exit동작이 마지막으로 실행됨, 위쪽에서 아래쪽으로
동작을 결합하는 순서는 상태 실행 동작에 영향을 미치지 않습니다. 예를 들면 다음과 같습니다.
| 결합된 동작 | 실행 순서 |
|---|---|
|
|
|
|
|
|
|
|
결합된 상태 동작의 규칙
유형이 동일한 여러 동작을 결합하지 마십시오.
동작 키워드(
entry,en,during,du,exit,ex)와 이름이 같은 데이터, 이벤트 또는 메시지를 생성하지 마십시오.



