Можно комбинировать 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;
Можно использовать любую комбинацию из трех действий. Для примера действительны следующие комбинации:
en, du:
en, ex:
du, ex:
en, du, ex:
Можно объединить действия в любом порядке в списке, разделенном запятыми. Для примера, en, du: дает тот же результат, что и du, en:.
Вы не можете объединить два или более действия одного типа. Например, следующие комбинации недопустимы:
en, en:
ex, en, ex:
du, du, ex:
Если вы комбинируете несколько действий одного типа, вы получаете предупреждение, что график выполняет действие только один раз.
Состояния выполняют объединенные действия в том же порядке, в котором они выполняют отдельные действия:
Entry действия сначала сверху вниз в том порядке, в котором они появляются в состоянии
During действия во-вторых, сверху вниз
Exit действия последними, сверху вниз
Порядок, в котором вы комбинируете действия, не влияет на поведение выполнения состояний. Для примера:
| Это состояние... | Выполняет действия в этом порядке... |
|---|---|
|
|
|
|
|
|
|
|
Не комбинируйте несколько действий одного типа.
Не создавайте данные, события или сообщения, которые имеют то же имя, что и ключевые слова действий: entry, en, during, du, exit, ex.