Можно объединить 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 действия в последний раз, сверху донизу
Порядок, в котором вы комбинируете действия, не влияет на поведение при выполнении состояния. Например:
| Совместные действия | Порядок Exectution |
|---|---|
|
|
|
|
|
|
|
|
Не комбинируйте несколько действий того же типа.
Не создавайте данные, события или сообщения, которые имеют то же имя как ключевые слова действия: entry, en, during, duвыход, ex.