Programación en Ada/Cláusula with

← Cláusula use Clásula with Unidades predefinidas/Standard →


Si una unidad se compila aparte (método usual si se va a utilizar en más programas), se puede hacer referencia a dicha unidad (cuya especificación y cuerpo pueden estar en ficheros distintos) mediante la cláusula with, cuya sintaxis es la siguiente:

cláusula_with ::= with identificador { , identificador } ;

Así, se podría utilizar el paquete Pila_Enteros del ejemplo anterior de esta manera:

with Pila_Enteros;  -- Se hace visible el paquete para todo el programa.
procedure Prueba_Pila_Enteros is
  use Pila_Enteros;  -- Para no usar nombre del paquete en las llamadas.
  N: Integer;
begin
  Poner (15);
  N := Quitar;
end Prueba_Pila_Enteros;

La cláusula with tiene que ir antes de la unidad (no puede ir dentro de un ámbito más interno), de este modo, se ve claramente la dependencia entre las unidades.

Si la cláusula use se coloca inmediatamente después de la cláusula with correspondiente, se podrá utilizar los nombres de las entidades de los paquetes sin hacer referencia cada vez al nombre del paquete, en toda la unidad.

Si el paquete P usa los servicios del paquete Q y éste a su vez utiliza los servicios de R, a no ser que P utilice directamente los servicios de R, se debería utilizar únicamente la cláusula with Q; dentro de P. El programador de Q no tiene porqué conocer el paquete R.

Destacar que las especificaciones de unidades utilizadas con with deben compilarse antes que la unidad que contiene dichas cláusulas with, aunque de esto se suelen encargar automáticamente los compiladores.

También hay que tener en cuenta, que las dependencias que sean únicamente del cuerpo no deben darse en la especificación a no ser que se exporte algo que necesite de dicho paquete.

Hay un paquete que no es necesario que se mencione en la cláusula with, el paquete Standard.

Manual de referencia de Ada

editar