상태 동작을 결합하여 중복 코드 제거하기
동일한 상태의 같은 태스크를 실행하는 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
)와 이름이 같은 데이터, 이벤트 또는 메시지를 생성하지 마십시오.