Funcionamiento de SELECT ELSE en ADA

Funcionamiento de SELECT ELSE en ADA

de Crhistyan German Silva Perdomo -
Número de respuestas: 2

Buenas me surgió la siguiente duda con respecta a estas clausulas. Si tengo un código en ADA de esta forma:
SELECT
    WHEN (condicion) =>
        ACCEPT algo DO
        ....
ELSE
     hacer_algo();

Cuando se cumple "condicion", por lo tanto queda la guarda abierta, pero no hay ninguno pedido de cita para la ENTRY algo ¿se queda esperando recibir un pedido para aceptar o sale por el ELSE? u otra forma de verlo ¿solo sale por el ELSE cuando no se cumple "condicion"?

En respuesta a Crhistyan German Silva Perdomo

Re: Funcionamiento de SELECT ELSE en ADA

de Jorge Merlino -

Un detalle importante es que en el select es obligatorio que siempre haya una guarda habilitada (o una entrada sin guarda). Si todas tus entradas tienen guarda y están todas deshabilitadas el programa falla.

Dicho esto, el select sale por el else si no hay nadie esperando en ninguna de las guardas habilitadas.

En respuesta a Jorge Merlino

Re: Funcionamiento de SELECT ELSE en ADA

de Crhistyan German Silva Perdomo -

Perfecto! gracias por la aclaración. La idea que se tenia era que solo hiciera lo del ELSE cuando la guarda esté deshabilitada y si estaba habilitada que se quede esperando en el ACCEPT por un pedido de cita.
Entonces ¿Puede ser la siguiente una solución mejor para esto?:

IF NOT condicion THEN
    hacer_algo() -- lo que quería hacer en el ELSE
END IF
ACCEPT algo DO
...