Main Content

Eliminar código redundante combinando acciones de estado

Puede combinar las acciones entry, during y exit que ejecutan las mismas tareas en un estado.

Al combinar acciones de estado que ejecutan las mismas tareas, eliminará el código redundante. Por ejemplo:

Acciones separadasAcciones combinadas equivalentes

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();

La combinación de acciones de estado de esta manera produce el mismo comportamiento de ejecución del gráfico (semántica) y genera el mismo código que las acciones equivalentes por separado.

Cómo combinar acciones de estado

Combine un conjunto de acciones entry, during o exit que ejecuten las mismas tareas como una lista de datos separados por comas en un estado. Esta es la sintaxis:

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

También puede utilizar las abreviaturas equivalentes:

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

Combinaciones válidas

Puede utilizar cualquier combinación de las tres acciones. Por ejemplo, las siguientes combinaciones son válidas:

  • en, du:

  • en, ex:

  • du, ex:

  • en, du, ex:

Puede combinar acciones en cualquier orden en la lista de datos separados por comas. Por ejemplo, en, du: tiene el mismo resultado que du, en:.

Combinaciones no válidas

No puede combinar dos o más acciones del mismo tipo. Por ejemplo, las siguientes combinaciones no son válidas:

  • en, en:

  • ex, en, ex:

  • du, du, ex:

Si combina varias acciones del mismo tipo, recibirá un aviso de que el gráfico ejecuta la acción solo una vez.

Orden de ejecución de acciones combinadas

Los estados ejecutan acciones combinadas en el mismo orden en el que ejecutan acciones separadas:

  1. En primer lugar, las acciones Entry, de arriba a abajo en el orden en el que aparecen en el estado

  2. En segundo lugar, las acciones During, de arriba a abajo

  3. Por último, las acciones Exit, de arriba a abajo

El orden en el que se combinan las acciones no influye en el comportamiento de la ejecución del estado. Por ejemplo:

Acciones combinadasOrden de ejecución

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;

Reglas para combinar acciones de estado

  • No combine varias acciones del mismo tipo.

  • No cree datos, eventos o mensajes que tengan el mismo nombre que las palabras clave de las acciones: entry, en, during, du, exit y ex.

Temas relacionados