Programación en Ada/Cláusula with
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_Enterosis
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.